@@ -34,6 +34,12 @@ class Client implements HttpClient, HttpAsyncClient
34
34
*/
35
35
private $ loop ;
36
36
37
+ /**
38
+ * HttpPlug message factory
39
+ * @var MessageFactory
40
+ */
41
+ private $ messageFactory ;
42
+
37
43
/**
38
44
* Initialize the React client
39
45
* @param LoopInterface|null $loop React Event loop
@@ -54,7 +60,7 @@ public function __construct(
54
60
);
55
61
}
56
62
57
- $ this ->messageFactory = new ReactMessageFactory ( $ messageFactory) ;
63
+ $ this ->messageFactory = $ messageFactory ;
58
64
}
59
65
60
66
/**
@@ -94,7 +100,7 @@ public function sendAsyncRequest(RequestInterface $request)
94
100
95
101
$ response ->on ('end ' , function (\Exception $ error = null ) use ($ deferred , $ request , $ response , &$ bodyStream ) {
96
102
$ bodyStream ->rewind ();
97
- $ psr7Response = $ this ->messageFactory -> buildResponse (
103
+ $ psr7Response = $ this ->buildResponse (
98
104
$ response ,
99
105
$ bodyStream
100
106
);
@@ -142,4 +148,23 @@ private function buildReactRequest(RequestInterface $request)
142
148
143
149
return $ reactRequest ;
144
150
}
151
+
152
+ /**
153
+ * Transform a React Response to a valid PSR7 ResponseInterface instance
154
+ * @param ReactResponse $response
155
+ * @return ResponseInterface
156
+ */
157
+ private function buildResponse (
158
+ ReactResponse $ response ,
159
+ StreamInterface $ body
160
+ ) {
161
+ $ body ->rewind ();
162
+ return $ this ->messageFactory ->createResponse (
163
+ $ response ->getCode (),
164
+ $ response ->getReasonPhrase (),
165
+ $ response ->getHeaders (),
166
+ $ body ,
167
+ $ response ->getVersion ()
168
+ );
169
+ }
145
170
}
0 commit comments