15
15
use GuzzleHttp \Client ;
16
16
use GuzzleHttp \ClientInterface ;
17
17
use GuzzleHttp \Exception \RequestException ;
18
- use GuzzleHttp \Message \Response ;
18
+ use GuzzleHttp \Message \ResponseInterface ;
19
19
use GuzzleHttp \Subscriber \Retry \RetrySubscriber ;
20
20
use Symfony \Component \EventDispatcher \EventDispatcherInterface ;
21
21
use Tmdb \Common \ParameterBag ;
22
+ use Tmdb \Exception \NullResponseException ;
22
23
use Tmdb \HttpClient \Request ;
24
+ use Tmdb \HttpClient \Response ;
23
25
24
26
class GuzzleAdapter extends AbstractAdapter
25
27
{
@@ -28,6 +30,11 @@ class GuzzleAdapter extends AbstractAdapter
28
30
*/
29
31
private $ client ;
30
32
33
+ /**
34
+ * @var Request
35
+ */
36
+ protected $ request ;
37
+
31
38
public function __construct (ClientInterface $ client = null , array $ options = [])
32
39
{
33
40
if (null === $ client ) {
@@ -63,6 +70,8 @@ public function registerSubscribers(EventDispatcherInterface $eventDispatcher)
63
70
*/
64
71
public function getConfiguration (Request $ request )
65
72
{
73
+ $ this ->request = $ request ;
74
+
66
75
return [
67
76
'headers ' => $ request ->getHeaders ()->all (),
68
77
'query ' => $ request ->getParameters ()->all ()
@@ -72,12 +81,12 @@ public function getConfiguration(Request $request)
72
81
/**
73
82
* Create the response object
74
83
*
75
- * @param Response $adapterResponse
84
+ * @param ResponseInterface $adapterResponse
76
85
* @return \Tmdb\HttpClient\Response
77
86
*/
78
- private function createResponse (Response $ adapterResponse )
87
+ private function createResponse (ResponseInterface $ adapterResponse = null )
79
88
{
80
- $ response = new \ Tmdb \ HttpClient \ Response ();
89
+ $ response = new Response ();
81
90
82
91
$ response ->setCode ($ adapterResponse ->getStatusCode ());
83
92
$ response ->setHeaders (new ParameterBag ($ adapterResponse ->getHeaders ()));
@@ -86,18 +95,40 @@ private function createResponse(Response $adapterResponse)
86
95
return $ response ;
87
96
}
88
97
98
+ /**
99
+ * Create the request exception
100
+ *
101
+ * @param Request $request
102
+ * @param RequestException|null $previousException
103
+ * @throws \Tmdb\Exception\TmdbApiException
104
+ */
105
+ protected function handleRequestException (Request $ request , RequestException $ previousException = null )
106
+ {
107
+ if (null !== $ previousException && null == $ response = $ previousException ->getResponse ()) {
108
+ throw new NullResponseException ($ this ->request , $ previousException );
109
+ }
110
+
111
+ throw $ this ->createApiException (
112
+ $ request ,
113
+ $ this ->createResponse ($ previousException ->getResponse ()),
114
+ $ previousException
115
+ );
116
+ }
117
+
89
118
/**
90
119
* {@inheritDoc}
91
120
*/
92
121
public function get (Request $ request )
93
122
{
123
+ $ response = null ;
124
+
94
125
try {
95
126
$ response = $ this ->client ->get (
96
127
$ request ->getPath (),
97
128
$ this ->getConfiguration ($ request )
98
129
);
99
130
} catch (RequestException $ e ) {
100
- throw $ this ->createApiException ($ request , $ this -> createResponse ( $ e -> getResponse ()) );
131
+ $ this ->handleRequestException ($ request , $ e );
101
132
}
102
133
103
134
return $ this ->createResponse ($ response );
@@ -108,6 +139,8 @@ public function get(Request $request)
108
139
*/
109
140
public function post (Request $ request )
110
141
{
142
+ $ response = null ;
143
+
111
144
try {
112
145
$ response = $ this ->client ->post (
113
146
$ request ->getPath (),
@@ -117,7 +150,7 @@ public function post(Request $request)
117
150
)
118
151
);
119
152
} catch (RequestException $ e ) {
120
- throw $ this ->createApiException ($ request , $ this -> createResponse ( $ e -> getResponse ()) );
153
+ $ this ->handleRequestException ($ request , $ e );
121
154
}
122
155
123
156
return $ this ->createResponse ($ response );
@@ -128,6 +161,8 @@ public function post(Request $request)
128
161
*/
129
162
public function put (Request $ request )
130
163
{
164
+ $ response = null ;
165
+
131
166
try {
132
167
$ response = $ this ->client ->put (
133
168
$ request ->getPath (),
@@ -137,7 +172,7 @@ public function put(Request $request)
137
172
)
138
173
);
139
174
} catch (RequestException $ e ) {
140
- throw $ this ->createApiException ($ request , $ this -> createResponse ( $ e -> getResponse ()) );
175
+ $ this ->handleRequestException ($ request , $ e );
141
176
}
142
177
143
178
return $ this ->createResponse ($ response );
@@ -148,6 +183,8 @@ public function put(Request $request)
148
183
*/
149
184
public function patch (Request $ request )
150
185
{
186
+ $ response = null ;
187
+
151
188
try {
152
189
$ response = $ this ->client ->patch (
153
190
$ request ->getPath (),
@@ -157,7 +194,7 @@ public function patch(Request $request)
157
194
)
158
195
);
159
196
} catch (RequestException $ e ) {
160
- throw $ this ->createApiException ($ request , $ this -> createResponse ( $ e -> getResponse ()) );
197
+ $ this ->handleRequestException ($ request , $ e );
161
198
}
162
199
163
200
return $ this ->createResponse ($ response );
@@ -168,6 +205,8 @@ public function patch(Request $request)
168
205
*/
169
206
public function delete (Request $ request )
170
207
{
208
+ $ response = null ;
209
+
171
210
try {
172
211
$ response = $ this ->client ->delete (
173
212
$ request ->getPath (),
@@ -177,7 +216,7 @@ public function delete(Request $request)
177
216
)
178
217
);
179
218
} catch (RequestException $ e ) {
180
- throw $ this ->createApiException ($ request , $ this -> createResponse ( $ e -> getResponse ()) );
219
+ $ this ->handleRequestException ($ request , $ e );
181
220
}
182
221
183
222
return $ this ->createResponse ($ response );
@@ -188,13 +227,15 @@ public function delete(Request $request)
188
227
*/
189
228
public function head (Request $ request )
190
229
{
230
+ $ response = null ;
231
+
191
232
try {
192
233
$ response = $ this ->client ->head (
193
234
$ request ->getPath (),
194
235
$ this ->getConfiguration ($ request )
195
236
);
196
237
} catch (RequestException $ e ) {
197
- throw $ this ->createApiException ($ request , $ this -> createResponse ( $ e -> getResponse ()) );
238
+ $ this ->handleRequestException ($ request , $ e );
198
239
}
199
240
200
241
return $ this ->createResponse ($ response );
0 commit comments