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:
Copy composer require lionix/digitalocean
Publishing the config file
Copy 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.
Copy DO_API_KEY=your_api_key
Available Services
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
).
Droplets
Using via Service
Copy <? 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
Using via Digitalocean Facade
Copy Digitalocean :: droplets () -> list () ;
Available Methods
Droplet Actions
Usage via Service
Copy <? 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
Copy DropletActions :: initiate ( $dropletId , 'snapshot' , [ 'name' => 'test' ] ) ;
Using via Digitalocean Facade
Copy Digitalocean :: dropletActions () -> initiate ( $dropletId , 'snapshot' , [ 'name' => 'test' ] ) ;
Available methods
Domains
Usage via Service
Copy <?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
Using via Digitalocean Facade
Copy Digitalocean :: domains () -> list () ;
Available methods
Snapshots
Usage via Service
Copy <?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
Using via Digitalocean Facade
Copy Digitalocean :: snapshots () -> list () ;
Available methods
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.
Copy php artisan do:snapshot {--dropletId=} {--name=} {--dropOldSnapshots}