@@ 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 | } |