Laravel Digitalocean API
Digital Ocean API for Laravel Framework
Last updated
Was this helpful?
Digital Ocean API for Laravel Framework
Last updated
Was this helpful?
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
<?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()
<?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}