4
4
5
5
use Http \Client \Common \Plugin \ErrorPlugin ;
6
6
use Http \Client \Common \PluginClient ;
7
- use Http \Client \HttpClient ;
8
- use Http \Discovery \HttpClientDiscovery ;
9
- use Http \Discovery \MessageFactoryDiscovery ;
10
- use Http \Discovery \UriFactoryDiscovery ;
7
+ use Http \Discovery \Psr17FactoryDiscovery ;
8
+ use Http \Discovery \Psr18ClientDiscovery ;
11
9
use Http \Message \Authentication ;
12
10
use Http \Message \Authentication \BasicAuth ;
13
11
use Http \Message \Authentication \Bearer ;
14
- use Http \Message \RequestFactory ;
15
- use Http \Message \UriFactory ;
16
12
use Psr \Http \Client \ClientExceptionInterface ;
13
+ use Psr \Http \Client \ClientInterface ;
14
+ use Psr \Http \Message \RequestFactoryInterface ;
17
15
use Psr \Http \Message \RequestInterface ;
18
16
use Psr \Http \Message \ResponseInterface ;
17
+ use Psr \Http \Message \StreamFactoryInterface ;
18
+ use Psr \Http \Message \UriFactoryInterface ;
19
19
use Psr \Http \Message \UriInterface ;
20
20
use stdClass ;
21
21
@@ -24,20 +24,25 @@ class IntercomClient
24
24
const SDK_VERSION = '4.4.0 ' ;
25
25
26
26
/**
27
- * @var HttpClient $httpClient
27
+ * @var ClientInterface $httpClient
28
28
*/
29
29
private $ httpClient ;
30
30
31
31
/**
32
- * @var RequestFactory $requestFactory
32
+ * @var RequestFactoryInterface $requestFactory
33
33
*/
34
34
private $ requestFactory ;
35
35
36
36
/**
37
- * @var UriFactory $uriFactory
37
+ * @var UriFactoryInterface $uriFactory
38
38
*/
39
39
private $ uriFactory ;
40
40
41
+ /**
42
+ * @var StreamFactoryInterface $streamFactory
43
+ */
44
+ private $ streamFactory ;
45
+
41
46
/**
42
47
* @var string API user authentication
43
48
*/
@@ -163,40 +168,51 @@ public function __construct(string $appIdOrToken, string $password = null, array
163
168
$ this ->extraRequestHeaders = $ extraRequestHeaders ;
164
169
165
170
$ this ->httpClient = $ this ->getDefaultHttpClient ();
166
- $ this ->requestFactory = MessageFactoryDiscovery::find ();
167
- $ this ->uriFactory = UriFactoryDiscovery::find ();
171
+ $ this ->requestFactory = Psr17FactoryDiscovery::findRequestFactory ();
172
+ $ this ->uriFactory = Psr17FactoryDiscovery::findUriFactory ();
173
+ $ this ->streamFactory = Psr17FactoryDiscovery::findStreamFactory ();
168
174
}
169
175
170
176
/**
171
177
* Sets the HTTP client.
172
178
*
173
- * @param HttpClient $httpClient
179
+ * @param ClientInterface $httpClient
174
180
*/
175
- public function setHttpClient (HttpClient $ httpClient )
181
+ public function setHttpClient (ClientInterface $ httpClient )
176
182
{
177
183
$ this ->httpClient = $ httpClient ;
178
184
}
179
185
180
186
/**
181
187
* Sets the request factory.
182
188
*
183
- * @param RequestFactory $requestFactory
189
+ * @param RequestFactoryInterface $requestFactory
184
190
*/
185
- public function setRequestFactory (RequestFactory $ requestFactory )
191
+ public function setRequestFactory (RequestFactoryInterface $ requestFactory )
186
192
{
187
193
$ this ->requestFactory = $ requestFactory ;
188
194
}
189
195
190
196
/**
191
197
* Sets the URI factory.
192
198
*
193
- * @param UriFactory $uriFactory
199
+ * @param UriFactoryInterface $uriFactory
194
200
*/
195
- public function setUriFactory (UriFactory $ uriFactory )
201
+ public function setUriFactory (UriFactoryInterface $ uriFactory )
196
202
{
197
203
$ this ->uriFactory = $ uriFactory ;
198
204
}
199
205
206
+ /**
207
+ * Sets the stream factory.
208
+ *
209
+ * @param StreamFactoryInterface $streamFactory
210
+ */
211
+ public function setStreamFactory (StreamFactoryInterface $ streamFactory )
212
+ {
213
+ $ this ->streamFactory = $ streamFactory ;
214
+ }
215
+
200
216
/**
201
217
* Sends POST request to Intercom API.
202
218
*
@@ -310,12 +326,12 @@ public function getRateLimitDetails()
310
326
}
311
327
312
328
/**
313
- * @return HttpClient
329
+ * @return ClientInterface
314
330
*/
315
331
private function getDefaultHttpClient ()
316
332
{
317
333
return new PluginClient (
318
- HttpClientDiscovery ::find (),
334
+ Psr18ClientDiscovery ::find (),
319
335
[new ErrorPlugin ()]
320
336
);
321
337
}
@@ -372,11 +388,21 @@ private function authenticateRequest(RequestInterface $request)
372
388
*/
373
389
private function sendRequest ($ method , $ uri , $ body = null )
374
390
{
375
- $ headers = $ this ->getRequestHeaders ();
376
391
$ body = is_array ($ body ) ? json_encode ($ body ) : $ body ;
377
- $ request = $ this ->authenticateRequest (
378
- $ this ->requestFactory ->createRequest ($ method , $ uri , $ headers , $ body )
379
- );
392
+ $ request = $ this ->requestFactory
393
+ ->createRequest ($ method , $ uri );
394
+
395
+ if ($ body !== null ) {
396
+ $ request = $ request
397
+ ->withBody ($ this ->streamFactory ->createStream ($ body ));
398
+ }
399
+
400
+ foreach ($ this ->getRequestHeaders () as $ name => $ value ) {
401
+ $ request = $ request
402
+ ->withHeader ($ name , $ value );
403
+ }
404
+
405
+ $ request = $ this ->authenticateRequest ($ request );
380
406
381
407
return $ this ->httpClient ->sendRequest ($ request );
382
408
}
0 commit comments