Laravel Digitalocean API
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.
You can install the package via composer:
composer require lionix/digitalocean
php artisan vendor:publish --provider="Lionix\DigitalOcean\DigitalOceanServiceProvider" --tag="config"
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
All the services can be used by injecting the service into your controller, by using the
Digitalocean
facade or by using the service facade (e.g. Droplets
).<?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);
}
}
Droplets::list();
Digitalocean::droplets()->list();
list()
store()
show()
destroy()
<?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();
}
}
DropletActions::initiate($dropletId, 'snapshot', ['name' => 'test']);
Digitalocean::dropletActions()->initiate($dropletId, 'snapshot', ['name' => 'test']);
initiate()
Droplet Action Types can be found in the official Digitalocean API Doc: https://docs.digitalocean.com/reference/api/api-reference/#operation/dropletActions_post
<?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);
}
}
Domains::list();
Digitalocean::domains()->list();
list()
store()
show()
destroy()
<?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);
}
}
Snapshots::list();
Digitalocean::snapshots()->list();
list()
make()
show()
destroy()
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 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 modified 8mo ago