16
16
use Base64Url \Base64Url ;
17
17
use GuzzleHttp \Client ;
18
18
use GuzzleHttp \Pool ;
19
+ use GuzzleHttp \Exception \ConnectException ;
19
20
use GuzzleHttp \Exception \RequestException ;
20
21
use GuzzleHttp \Psr7 \Request ;
22
+ use Psr \Http \Message \RequestInterface ;
21
23
use Psr \Http \Message \ResponseInterface ;
22
24
23
25
class WebPush
@@ -152,17 +154,11 @@ public function flush(?int $batchSize = null): \Generator
152
154
foreach ($ requests as $ request ) {
153
155
$ promises [] = $ this ->client ->sendAsync ($ request )
154
156
->then (function ($ response ) use ($ request ) {
155
- /** @var ResponseInterface $response * */
157
+ /** @var ResponseInterface $response **/
156
158
return new MessageSentReport ($ request , $ response );
157
159
})
158
160
->otherwise (function ($ reason ) {
159
- /** @var RequestException $reason **/
160
- if (method_exists ($ reason , 'getResponse ' )) {
161
- $ response = $ reason ->getResponse ();
162
- } else {
163
- $ response = null ;
164
- }
165
- return new MessageSentReport ($ reason ->getRequest (), $ response , false , $ reason ->getMessage ());
161
+ return $ this ->createRejectedReport ($ reason );
166
162
});
167
163
}
168
164
@@ -205,17 +201,12 @@ public function flushPooled($callback, ?int $batchSize = null, ?int $requestConc
205
201
$ pool = new Pool ($ this ->client , $ batch , [
206
202
'requestConcurrency ' => $ requestConcurrency ,
207
203
'fulfilled ' => function (ResponseInterface $ response , int $ index ) use ($ callback , $ batch ) {
208
- /** @var \Psr\Http\Message\ RequestInterface $request **/
204
+ /** @var RequestInterface $request **/
209
205
$ request = $ batch [$ index ];
210
206
$ callback (new MessageSentReport ($ request , $ response ));
211
207
},
212
- 'rejected ' => function (RequestException $ reason ) use ($ callback ) {
213
- if (method_exists ($ reason , 'getResponse ' )) {
214
- $ response = $ reason ->getResponse ();
215
- } else {
216
- $ response = null ;
217
- }
218
- $ callback (new MessageSentReport ($ reason ->getRequest (), $ response , false , $ reason ->getMessage ()));
208
+ 'rejected ' => function ($ reason ) use ($ callback ) {
209
+ $ callback ($ this ->createRejectedReport ($ reason ));
219
210
},
220
211
]);
221
212
@@ -228,6 +219,21 @@ public function flushPooled($callback, ?int $batchSize = null, ?int $requestConc
228
219
}
229
220
}
230
221
222
+ /**
223
+ * @param RequestException|ConnectException $reason
224
+ * @return MessageSentReport
225
+ */
226
+ protected function createRejectedReport ($ reason ): MessageSentReport
227
+ {
228
+ if ($ reason instanceof RequestException) {
229
+ $ response = $ reason ->getResponse ();
230
+ } else {
231
+ $ response = null ;
232
+ }
233
+
234
+ return new MessageSentReport ($ reason ->getRequest (), $ response , false , $ reason ->getMessage ());
235
+ }
236
+
231
237
/**
232
238
* @throws \ErrorException|\Random\RandomException
233
239
*/
0 commit comments