Client::put()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
namespace Groove;
4
5
use Groove\Api\Agent;
6
use Groove\Api\Group;
7
use Groove\Api\Folder;
8
use Groove\Api\Ticket;
9
use Groove\Api\Mailbox;
10
use Groove\Api\Message;
11
use Groove\Api\Webhook;
12
use Groove\Api\Customer;
13
use Groove\Api\Attachment;
14
use GuzzleHttp\Client as HttpClient;
15
16
class Client
17
{
18
    /**
19
     * @var string
20
     */
21
    const VERSION = 'v0.4.5';
22
23
    /**
24
     * @var string
25
     */
26
    const GROOVE_API_VERSION = 'v1';
27
28
    /**
29
     * @var string
30
     */
31
    private $accessToken;
32
33
    /**
34
     * @var \GuzzleHttp\Client
35
     */
36
    private $httpClient;
37
38
    /**
39
     * Groove client.
40
     *
41
     * @param string $accessToken
42
     * @param null|\GuzzleHttp\Client $httpClient
43
     */
44
    public function __construct($accessToken, $httpClient = null)
45
    {
46
        $this->accessToken = $accessToken;
47
        $this->httpClient = $httpClient;
48
49
        if (is_null($httpClient)) {
50
            $this->setupHttpClient($accessToken);
51
        }
52
    }
53
54
    /**
55
     * Get request.
56
     *
57
     * @param  string $endpoint
58
     * @param  array $params
59
     * @return mixed
60
     */
61
    public function get($endpoint, $params = [])
62
    {
63
        $request = $this->httpClient->get($endpoint, ['form_params' => $params]);
64
65
        return json_decode($request->getBody());
66
    }
67
68
    /**
69
     * Post request.
70
     *
71
     * @param  string $endpoint
72
     * @param  array $params
73
     * @return mixed
74
     */
75
    public function post($endpoint, $params = [])
76
    {
77
        $request = $this->httpClient->post($endpoint, ['form_params' => $params]);
78
79
        return json_decode($request->getBody());
80
    }
81
82
    /**
83
     * Put request.
84
     *
85
     * @param  string $endpoint
86
     * @param  array $params
87
     * @return mixed
88
     */
89
    public function put($endpoint, $params = [])
90
    {
91
        $request = $this->httpClient->put($endpoint, ['form_params' => $params]);
92
93
        return json_decode($request->getBody());
94
    }
95
96
    /**
97
     * Groove agents.
98
     *
99
     * @return Agent
100
     */
101
    public function agents()
102
    {
103
        return new Agent($this);
104
    }
105
106
    /**
107
     * Groove tickets.
108
     *
109
     * @return Ticket
110
     */
111
    public function tickets()
112
    {
113
        return new Ticket($this);
114
    }
115
116
    /**
117
     * Groove customers.
118
     *
119
     * @return Customer
120
     */
121
    public function customers()
122
    {
123
        return new Customer($this);
124
    }
125
126
    /**
127
     * Groove mailboxes.
128
     *
129
     * @return Mailbox
130
     */
131
    public function mailboxes()
132
    {
133
        return new Mailbox($this);
134
    }
135
136
    /**
137
     * Groove attachments.
138
     *
139
     * @return Attachment
140
     */
141
    public function attachments()
142
    {
143
        return new Attachment($this);
144
    }
145
146
    /**
147
     * Groove groups.
148
     *
149
     * @return Group
150
     */
151
    public function groups()
152
    {
153
        return new Group($this);
154
    }
155
156
    /**
157
     * Groove folders.
158
     *
159
     * @return Folder
160
     */
161
    public function folders()
162
    {
163
        return new Folder($this);
164
    }
165
166
    /**
167
     * Groove messages.
168
     *
169
     * @return Message
170
     */
171
    public function messages()
172
    {
173
        return new Message($this);
174
    }
175
176
    /**
177
     * Groove webhooks.
178
     *
179
     * @return Webhook
180
     */
181
    public function webhooks()
182
    {
183
        return new Webhook($this);
184
    }
185
186
    /**
187
     * Get access token.
188
     *
189
     * @return string
190
     */
191
    public function getAccessToken()
192
    {
193
        return $this->accessToken;
194
    }
195
196
    /**
197
     * Set up the HTTP client.
198
     *
199
     * @param  string $accessToken
200
     * @return void
201
     */
202
    private function setupHttpClient($accessToken)
203
    {
204
        $this->httpClient = new HttpClient([
205
            'base_uri' => 'https://api.groovehq.com/'.self::GROOVE_API_VERSION.'/',
206
            'headers' => [
207
                'Authorization' => "Bearer $accessToken",
208
            ],
209
        ]);
210
    }
211
}
212