2
2
3
3
namespace Ubirak \RestApiBehatExtension \Rest ;
4
4
5
- use Http \Client \HttpClient ;
6
- use Http \Discovery \HttpClientDiscovery ;
7
- use Http \Discovery \MessageFactoryDiscovery ;
5
+ use Http \Discovery \Psr17Factory ;
6
+ use Http \Discovery \Psr18ClientDiscovery ;
7
+ use Psr \Http \Client \ClientInterface ;
8
+ use Psr \Http \Message \RequestFactoryInterface ;
8
9
use Psr \Http \Message \RequestInterface ;
9
10
use Psr \Http \Message \ResponseInterface ;
10
11
use Tolerance \Operation \Callback ;
15
16
16
17
class RestApiBrowser
17
18
{
18
- /** @var HttpClient */
19
+ /** @var ClientInterface */
19
20
private $ httpClient ;
20
21
21
22
/** @var RequestInterface */
@@ -33,23 +34,23 @@ class RestApiBrowser
33
34
/** @var string */
34
35
private $ host ;
35
36
36
- /** @var MessageFactoryDiscovery */
37
+ /** @var RequestFactoryInterface */
37
38
private $ messageFactory ;
38
39
39
40
/**
40
41
* @param string $host
41
42
*/
42
- public function __construct ($ host , HttpClient $ httpClient = null )
43
+ public function __construct ($ host , ClientInterface $ httpClient = null )
43
44
{
44
45
$ this ->host = $ host ;
45
- $ this ->httpClient = $ httpClient ?: HttpClientDiscovery ::find ();
46
- $ this ->messageFactory = MessageFactoryDiscovery:: find ();
46
+ $ this ->httpClient = $ httpClient ?: Psr18ClientDiscovery ::find ();
47
+ $ this ->messageFactory = new Psr17Factory ();
47
48
}
48
49
49
50
/**
50
51
* Allow to override the httpClient to use yours with specific middleware for example.
51
52
*/
52
- public function useHttpClient (HttpClient $ httpClient )
53
+ public function useHttpClient (ClientInterface $ httpClient )
53
54
{
54
55
$ this ->httpClient = $ httpClient ;
55
56
}
@@ -105,7 +106,14 @@ public function sendRequest($method, $uri, $body = null)
105
106
$ this ->setRequestHeader ('Content-Type ' , $ html ->getContentTypeHeaderValue ());
106
107
}
107
108
108
- $ this ->request = $ this ->messageFactory ->createRequest ($ method , $ uri , $ this ->requestHeaders , $ body );
109
+ $ this ->request = $ this ->messageFactory ->createRequest ($ method , $ uri );
110
+ foreach ($ this ->requestHeaders as $ keyHeader => $ valueHeader ) {
111
+ $ this ->request = $ this ->request ->withHeader ($ keyHeader , $ valueHeader );
112
+ }
113
+ if (null !== $ body ) {
114
+ $ this ->request = $ this ->request ->withBody ($ this ->messageFactory ->createStream ($ body ));
115
+ }
116
+
109
117
$ this ->response = $ this ->httpClient ->sendRequest ($ this ->request );
110
118
$ this ->requestHeaders = [];
111
119
0 commit comments