| @@ 7-75 (lines=69) @@ | ||
| 4 | ||
| 5 | use GuzzleHttp\Client; |
|
| 6 | ||
| 7 | class DigitalOcean extends Api |
|
| 8 | { |
|
| 9 | ||
| 10 | /** |
|
| 11 | * @param string $token API Token from DigitalOcean.com |
|
| 12 | * @param number $server_id The ID of the droplet you want to control |
|
| 13 | * @param string $host The api host |
|
| 14 | * @param Client $client The guzzle client to use |
|
| 15 | */ |
|
| 16 | public function __construct($token, $server_id, $host = "api.digitalocean.com", Client $client = null) { |
|
| 17 | parent::__construct($token, $server_id, $host, $client); |
|
| 18 | } |
|
| 19 | ||
| 20 | /** |
|
| 21 | * Executes a Boot command |
|
| 22 | * @return \Psr\Http\Message\ResponseInterface |
|
| 23 | */ |
|
| 24 | public function boot() { |
|
| 25 | return $this->exec("power_on"); |
|
| 26 | } |
|
| 27 | ||
| 28 | /** |
|
| 29 | * Executes a Reboot command |
|
| 30 | * @return \Psr\Http\Message\ResponseInterface |
|
| 31 | */ |
|
| 32 | public function reboot() { |
|
| 33 | return $this->exec("reboot"); |
|
| 34 | } |
|
| 35 | ||
| 36 | /** |
|
| 37 | * Executes a Shutdown command |
|
| 38 | * @return \Psr\Http\Message\ResponseInterface |
|
| 39 | */ |
|
| 40 | public function shutdown() { |
|
| 41 | return $this->exec("power_off"); |
|
| 42 | } |
|
| 43 | ||
| 44 | /** |
|
| 45 | * Builds the request URL for the API call |
|
| 46 | * @param string $action The DigitalOcean API action |
|
| 47 | * @return string |
|
| 48 | */ |
|
| 49 | protected function buildRequestUrl($action) { |
|
| 50 | return "https://{$this->host}/v2/droplets/{$this->server_id}/actions"; |
|
| 51 | } |
|
| 52 | ||
| 53 | /** |
|
| 54 | * Builds the request data for the API call |
|
| 55 | * @param string $action The DigitalOcean API action |
|
| 56 | * @return array |
|
| 57 | */ |
|
| 58 | protected function buildRequestData($action) { |
|
| 59 | return ["type"=>$action]; |
|
| 60 | } |
|
| 61 | ||
| 62 | /** |
|
| 63 | * Executes a command on the API |
|
| 64 | * @param string $action |
|
| 65 | * @return \Psr\Http\Message\ResponseInterface |
|
| 66 | */ |
|
| 67 | protected function exec($action) { |
|
| 68 | $url = $this->buildRequestUrl($action); |
|
| 69 | $data = $this->buildRequestData($action); |
|
| 70 | return $this->client->request('POST', $url, [ |
|
| 71 | 'auth' => [$this->token, ""], |
|
| 72 | 'form_params' => $data, |
|
| 73 | ]); |
|
| 74 | } |
|
| 75 | } |
|
| @@ 7-78 (lines=72) @@ | ||
| 4 | ||
| 5 | use GuzzleHttp\Client; |
|
| 6 | ||
| 7 | class Vultr extends Api |
|
| 8 | { |
|
| 9 | ||
| 10 | /** |
|
| 11 | * @param string $token API Token from vultr.com |
|
| 12 | * @param number $server_id The ID of the server you want to control (Vultr calls it the `SUBID`) |
|
| 13 | * @param string $host The api host |
|
| 14 | * @param Client $client The guzzle client to use |
|
| 15 | */ |
|
| 16 | public function __construct($token, $server_id, $host = "api.vultr.com", Client $client = null){ |
|
| 17 | parent::__construct($token, $server_id, $host, $client); |
|
| 18 | } |
|
| 19 | ||
| 20 | /** |
|
| 21 | * Executes a Boot command |
|
| 22 | * @return \Psr\Http\Message\ResponseInterface |
|
| 23 | */ |
|
| 24 | public function boot(){ |
|
| 25 | return $this->exec("start"); |
|
| 26 | } |
|
| 27 | ||
| 28 | /** |
|
| 29 | * Executes a Reboot command |
|
| 30 | * @return \Psr\Http\Message\ResponseInterface |
|
| 31 | */ |
|
| 32 | public function reboot(){ |
|
| 33 | return $this->exec("reboot"); |
|
| 34 | } |
|
| 35 | ||
| 36 | /** |
|
| 37 | * Executes a Shutdown command |
|
| 38 | * @return \Psr\Http\Message\ResponseInterface |
|
| 39 | */ |
|
| 40 | public function shutdown(){ |
|
| 41 | return $this->exec("halt"); |
|
| 42 | } |
|
| 43 | ||
| 44 | /** |
|
| 45 | * Builds the request URL for the API call |
|
| 46 | * @param string $action The Vultr API action |
|
| 47 | * @return string |
|
| 48 | */ |
|
| 49 | protected function buildRequestUrl($action){ |
|
| 50 | return "https://{$this->host}/v1/server/{$action}"; |
|
| 51 | } |
|
| 52 | ||
| 53 | /** |
|
| 54 | * Builds the request data for the API call |
|
| 55 | * @param string $action The Vultr API action |
|
| 56 | * @return array |
|
| 57 | */ |
|
| 58 | protected function buildRequestData($action){ |
|
| 59 | return ["SUBID"=>$this->server_id]; |
|
| 60 | } |
|
| 61 | ||
| 62 | /** |
|
| 63 | * Executes a command on the API |
|
| 64 | * @param string $action |
|
| 65 | * @return \Psr\Http\Message\ResponseInterface |
|
| 66 | */ |
|
| 67 | protected function exec($action){ |
|
| 68 | $url = $this->buildRequestUrl($action); |
|
| 69 | $data = $this->buildRequestData($action); |
|
| 70 | ||
| 71 | return $this->client->request('POST', $url, [ |
|
| 72 | 'headers' => [ |
|
| 73 | 'API-Key' => $this->token, |
|
| 74 | ], |
|
| 75 | 'form_params' => $data, |
|
| 76 | ]); |
|
| 77 | } |
|
| 78 | } |
|