Code Duplication    Length = 69-72 lines in 2 locations

src/Drivers/Api/DigitalOcean.php 1 location

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

src/Drivers/Api/Vultr.php 1 location

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