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

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

<?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()

Droplet Action Types can be found in the official Digitalocean API Doc: https://docs.digitalocean.com/reference/api/api-reference/#operation/dropletActions_post

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