Issues (2)

src/Resources/Base.php (1 issue)

Severity
1
<?php
2
3
namespace MelhorEnvio\Resources;
4
5
use Exception;
6
use GuzzleHttp\Client;
7
use GuzzleHttp\ClientInterface;
8
use MelhorEnvio\Enums\Endpoint;
9
use MelhorEnvio\Enums\Environment;
10
use MelhorEnvio\Exceptions\InvalidEnvironmentException;
11
12
abstract class Base implements Resource
13
{
14
    /**
15
     * @var string
16
     */
17
    protected $token;
18
19
    /**
20
     * @var string
21
     */
22
    protected $environment;
23
24
    /**
25
     * @var ClientInterface
26
     */
27
    protected $http;
28
29
    /**
30
     * @param $token
31
     * @param $environment
32
     */
33
    public function __construct($token, $environment = null)
34
    {
35
        $this->token = $token;
36
37
        $this->setEnvironment($environment ? $environment : Environment::SANDBOX);
38
39
        $this->http = new Client([
40
            'base_uri' => Endpoint::ENDPOINTS[$this->environment] . '/api/' . Endpoint::VERSIONS[$this->environment] . '/',
41
            'headers' => [
42
                'Authorization' => 'Bearer ' . $this->token,
43
                'Accept'        => 'application/json',
44
            ]
45
        ]);
46
    }
47
48
    /**
49
     * @return string
50
     */
51
    public function getEnvironment()
52
    {
53
        return $this->environment;
54
    }
55
56
    /**
57
     * @param string $environment
58
     * @return void
59
     */
60
    public function setEnvironment($environment)
61
    {
62
        if (! in_array($environment, Environment::ENVIRONMENTS)) {
63
            throw new InvalidEnvironmentException;
64
        }
65
66
        $this->environment = $environment;
67
    }
68
69
    /**
70
     * Get Http Client
71
     * @return ClientInterface
72
     */
73
    public function getHttp()
74
    {
75
        return $this->http;
76
    }
77
78
    /**
79
     * Set Http Client
80
     *
81
     * @param ClientInterface $http
82
     * @throws Exception
83
     */
84
    public function setHttp($http)
85
    {
86
        if (! $http instanceof ClientInterface) {
0 ignored issues
show
$http is always a sub-type of GuzzleHttp\ClientInterface.
Loading history...
87
            throw new Exception('The parameter passed is not an instance of ' . ClientInterface::class);
88
        }
89
90
        $this->http = $http;
91
    }
92
}
93