pxgamer / digitalocean-php
An easy to use wrapper for the DigitalOcean API written in PHP.
Requires
- php: ^7.1
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: ^6.4
- squizlabs/php_codesniffer: ^3.1
README
An easy to use wrapper for the DigitalOcean API written in PHP.
Structure
src/
tests/
vendor/
Install
Via Composer
$ composer require pxgamer/digitalocean-php
Usage
use \pxgamer\DigitalOcean\Client; $client = new Client();
Classes
Client
- This is the main class and is used to hold the CURL functions. It also contains the API key, and should be called first.
- This class must be passed to other classes upon their initialisation.
Account
- This class is used to retrieve account information.
Domains
- This class is used to modify and retrieve domain information.
Droplets
- This class is used to manage multiple droplets, or all droplets for an account.
Droplet
- This class is used to manage droplets individually and can provides functions such as creating snapshots, enabling and disabling features, etc.
// Use the specific classes as their short names use \pxgamer\DigitalOcean; // Create a new Client instance $client = new DigitalOcean\Client(); $client->setAuthKey('API_KEY'); // Initialise a new instance of each class $account = new DigitalOcean\Account($client); $domains = new DigitalOcean\Domains($client); $droplets = new DigitalOcean\Droplets($client); $droplet = new DigitalOcean\Droplet($client);
Methods
Client Class
/** * This is required to be initialised first. * It must be passed into all other classes. */ use \pxgamer\DigitalOcean\Client; $client = new Client(); $client->setAuthKey('API_KEY');
Account Class
Initialise Account Class
use \pxgamer\DigitalOcean\Account; $account = new Account($client);
Getting Account Information
$account->getAccount();
Domains Class
Initialise Domains Class
use \pxgamer\DigitalOcean\Domains; $domains = new Domains($client);
Getting a list of domains
$domains->listDomains();
Getting information for a specific domain
$domains->getDomain('example.com');
Create a new domain
$domains->createDomain('example.com');
Deleting a domain
$domains->deleteDomain('example.com');
Droplets Class
Initialise Droplets Class
// Requires the Client class to be initialised use \pxgamer\DigitalOcean\Droplets; $droplets = new Droplets($client);
Listing droplets
$droplets->listDroplets();
Listing neighbours of Droplets (droplets in the same location)
$droplets->listNeighbours();
Droplet Class
Initialise Droplet Class
// Requires the Client class to be initialised use \pxgamer\DigitalOcean\Droplet; $droplet = new Droplet($client);
Setting the Droplet ID
$droplet->setDroplet('DROPLET_ID');
Getting information about a droplet
// Requires the droplet ID to be set $droplet->getDroplet();
Creating a Droplet
$dropletAttributes = (array)[ 'name' => 'example.com', // Required 'region' => 'nyc3', // Required 'size' => '512mb', // Required 'image' => 'ubuntu-14-04-x64', // Required 'ssh_keys' => null, 'backups' => false, 'ipv6' => true, 'user_data' => null, 'private_networking' => null, 'volume' => null, 'tags' => [ 'web' ], ]; $droplet->createDroplet($dropletAttributes);
Deleting a Droplet
// Requires the droplet ID to be set $droplet->deleteDroplet();
Listing a Droplet's neighbours
// Requires the droplet ID to be set $droplet->listNeighbours();
Create a snapshot
// Requires the droplet ID to be set $droplet->createSnapshot('SNAPSHOT-NAME');
Enabling backups for a Droplet
// Requires the droplet ID to be set $droplet->enableBackups();
Disabling backups for a Droplet
// Requires the droplet ID to be set $droplet->disableBackups();
Rebooting a Droplet
// Requires the droplet ID to be set $droplet->reboot();
Power Cycling a Droplet
// Requires the droplet ID to be set $droplet->powerCycle();
Shutting down a Droplet
// Requires the droplet ID to be set $droplet->shutdown();
Powering off a Droplet
// Requires the droplet ID to be set $droplet->powerOff();
Powering on a Droplet
// Requires the droplet ID to be set $droplet->powerOn();
Resizing a Droplet
/** * Requires the droplet ID to be set * * Attributes: * - $size [string] (e.g. '1gb') * - $increaseDiskSize [boolean] (e.g. false) - Determines whether this is a permanent resize or not */ $droplet->resize('1gb', false);
Reset a Droplet's password
// Requires the droplet ID to be set $droplet->passwordReset();
Renaming a Droplet
// Requires the droplet ID to be set $droplet->rename('NEW_DROPLET_NAME');
Enable IPv6 for a Droplet
// Requires the droplet ID to be set $droplet->enableIPv6();
Enable Private Networking for a Droplet
// Requires the droplet ID to be set $droplet->enablePrivateNetworking();
Change log
Please see CHANGELOG for more information on what has changed recently.
Testing
$ composer test
Contributing
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
Security
If you discover any security related issues, please email owzie123@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.