Laravel Digitalocean API
Digital Ocean API for Laravel Framework

Digital Ocean API for Laravel Framework
Digital Ocean API for Laravel Framework is a package created by Arayik Smbatyan (@arayiksmbatyan) from Lionix to make it easier to use Digital Ocean API in Laravel Framework.
The package is not using any external libraries like DO PHP SDK, it uses general DO API, therefore it is very easily extendable.
Installation
You can install the package via composer:
composer require lionix/digitalocean
Publishing the config file
php artisan vendor:publish --provider="Lionix\DigitalOcean\DigitalOceanServiceProvider" --tag="config"
API KEY
Open your Digitalocean Account and go to the API section. Generate a new Personal Access Token with write
access and add to your .env
file.
DO_API_KEY=your_api_key
Available Services
Droplets
Using via Service
<?php
namespace App\Http\Controllers;
use Digitalocean\Services\DropletsService;
class DigitalOceanController extends Controller
{
/**
* @throws \GuzzleHttp\Exception\GuzzleException
* @throws \JsonException
*/
public function droplets(DropletsService $dropletsService): \Illuminate\Http\JsonResponse
{
$droplets = $dropletsService->list();
return response()->json($droplets);
}
}
Using via Facade
Droplets::list();
Using via Digitalocean Facade
Digitalocean::droplets()->list();
Available Methods
list()
store()
show()
destroy()
Droplet Actions
Usage via Service
<?php
namespace App\Http\Controllers;
use Digitalocean\Services\DropletActionsService;
class DigitalOceanController extends Controller
{
/**
* @throws \GuzzleHttp\Exception\GuzzleException
* @throws \JsonException
*/
public function actions(DropletActionsService $actionService): bool
{
$dropletId = config('digital-ocean.dropletId');
$actionService->initiate($dropletId, 'snapshot', ['name' => 'test']);
$actionService->initiate($dropletId, 'reboot');
return response()->isOk();
}
}
Using via Facade
DropletActions::initiate($dropletId, 'snapshot', ['name' => 'test']);
Using via Digitalocean Facade
Digitalocean::dropletActions()->initiate($dropletId, 'snapshot', ['name' => 'test']);
Available methods
initiate()
Domains
Usage via Service
<?php
namespace App\Http\Controllers;
use Digitalocean\Services\DomainsService;
class DigitalOceanController extends Controller
{
/**
* @throws \GuzzleHttp\Exception\GuzzleException
* @throws \JsonException
*/
public function domains(DomainsService $domainService): \Illuminate\Http\JsonResponse
{
$response = $domainService->store([
'name' => 'example.com',
'ip_address' => '0.0.0.0'
]);
return response()->json($response);
}
}
Using via Facade
Domains::list();
Using via Digitalocean Facade
Digitalocean::domains()->list();
Available methods
list()
store()
show()
destroy()
Snapshots
Usage via Service
<?php
namespace App\Http\Controllers;
use Digitalocean\Services\SnapshotsService;
class DigitalOceanController extends Controller
{
/**
* @throws \GuzzleHttp\Exception\GuzzleException
* @throws \JsonException
*/
public function snapshots(SnapshotsService $snapshotService): \Illuminate\Http\JsonResponse
{
$dropletId = 123456789;
$response = $snapshotService->make($dropletId, 'test-snapshot');
return response()->json($response);
}
}
Using via Facade
Snapshots::list();
Using via Digitalocean Facade
Digitalocean::snapshots()->list();
Available methods
list()
make()
show()
destroy()
Global Service
Available methods
Digitalocean::droplets()->...
Digitalocean::dropletActions()->...
Digitalocean::snapshots()->...
Digitalocean::domains()->...
Digitalocean::send($method, $uri, array $params = [])
The `send()` method can accept any $uri available from Digitalocean API: https://docs.digitalocean.com/reference/api/api-reference/
DO Snapshot Command
DO Snapshot Command is pre-defined snapshot command which can be used to make a snapshot from any droplet you want, e.g. you can set up a daily snapshot for your droplet in Kernel.php file.
php artisan do:snapshot {--dropletId=} {--name=} {--dropOldSnapshots}
Last updated
Was this helpful?