diff --git a/src/Symfony/Component/Notifier/Bridge/AllMySms/AllMySmsTransport.php b/src/Symfony/Component/Notifier/Bridge/AllMySms/AllMySmsTransport.php index 524ff0ce3db08..fab94304bf015 100644 --- a/src/Symfony/Component/Notifier/Bridge/AllMySms/AllMySmsTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/AllMySms/AllMySmsTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SmsMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -70,7 +71,13 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - if (201 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote AllMySms server.', $response, 0, $e); + } + + if (201 !== $statusCode) { $error = $response->toArray(false); throw new TransportException(sprintf('Unable to send the SMS: "%s" (%s).', $error['description'], $error['code']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/Clickatell/ClickatellTransport.php b/src/Symfony/Component/Notifier/Bridge/Clickatell/ClickatellTransport.php index 5584e9d3ba7f8..621ab9d430675 100644 --- a/src/Symfony/Component/Notifier/Bridge/Clickatell/ClickatellTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Clickatell/ClickatellTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SmsMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -74,7 +75,13 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - if (202 === $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Clicktell server.', $response, 0, $e); + } + + if (202 === $statusCode) { $result = $response->toArray(); $sentMessage = new SentMessage($message, (string) $this); $sentMessage->setMessageId($result['data']['message'][0]['apiMessageId']); diff --git a/src/Symfony/Component/Notifier/Bridge/GatewayApi/GatewayApiTransport.php b/src/Symfony/Component/Notifier/Bridge/GatewayApi/GatewayApiTransport.php index c8e4393dfa461..0ed6ec9cb4f9e 100644 --- a/src/Symfony/Component/Notifier/Bridge/GatewayApi/GatewayApiTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/GatewayApi/GatewayApiTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SmsMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -65,7 +66,12 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - $statusCode = $response->getStatusCode(); + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote GatewayApi server.', $response, 0, $e); + } + if (200 !== $statusCode) { throw new TransportException(sprintf('Unable to send the SMS: error %d.', $statusCode), $response); } diff --git a/src/Symfony/Component/Notifier/Bridge/Gitter/GitterTransport.php b/src/Symfony/Component/Notifier/Bridge/Gitter/GitterTransport.php index 1c309d255c6e7..b8d88e7f5d88d 100644 --- a/src/Symfony/Component/Notifier/Bridge/Gitter/GitterTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Gitter/GitterTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SentMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -66,7 +67,11 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - $result = $response->toArray(false); + try { + $result = $response->toArray(false); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Gitter server.', $response, 0, $e); + } if (200 !== $response->getStatusCode()) { throw new TransportException(sprintf('Unable to post the Gitter message: "%s".', $result['error']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/Iqsms/IqsmsTransport.php b/src/Symfony/Component/Notifier/Bridge/Iqsms/IqsmsTransport.php index a83aee83ebb50..91240bcea6c53 100644 --- a/src/Symfony/Component/Notifier/Bridge/Iqsms/IqsmsTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Iqsms/IqsmsTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SmsMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -71,7 +72,12 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - $result = $response->toArray(false); + try { + $result = $response->toArray(false); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Iqsms server.', $response, 0, $e); + } + foreach ($result['messages'] as $msg) { if ('accepted' !== $msg['status']) { throw new TransportException(sprintf('Unable to send the SMS: "%s".', $msg['status']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/LightSms/LightSmsTransport.php b/src/Symfony/Component/Notifier/Bridge/LightSms/LightSmsTransport.php index cb161cd419376..3cb74e7fa695b 100644 --- a/src/Symfony/Component/Notifier/Bridge/LightSms/LightSmsTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/LightSms/LightSmsTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SmsMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -117,7 +118,13 @@ protected function doSend(MessageInterface $message): SentMessage ] ); - if (200 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote LightSms server.', $response, 0, $e); + } + + if (200 !== $statusCode) { throw new TransportException('Unable to send the SMS.', $response); } diff --git a/src/Symfony/Component/Notifier/Bridge/MessageBird/MessageBirdTransport.php b/src/Symfony/Component/Notifier/Bridge/MessageBird/MessageBirdTransport.php index 9a140ac7bb65f..cb56f6a843c0c 100644 --- a/src/Symfony/Component/Notifier/Bridge/MessageBird/MessageBirdTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/MessageBird/MessageBirdTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SmsMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -64,7 +65,13 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - if (201 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote MessageBird server.', $response, 0, $e); + } + + if (201 !== $statusCode) { if (!isset($response->toArray(false)['errors'])) { throw new TransportException('Unable to send the SMS.', $response); } diff --git a/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/MicrosoftTeamsTransport.php b/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/MicrosoftTeamsTransport.php index ccd0f4cdf770a..28ae3440dede6 100644 --- a/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/MicrosoftTeamsTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/MicrosoftTeamsTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SentMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -64,6 +65,12 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote MicrosoftTeams server.', $response, 0, $e); + } + $requestId = $response->getHeaders(false)['request-id'][0] ?? null; if (null === $requestId) { $originalContent = $message->getSubject(); @@ -71,7 +78,7 @@ protected function doSend(MessageInterface $message): SentMessage throw new TransportException(sprintf('Unable to post the Microsoft Teams message: "%s" (request-id not found).', $originalContent), $response); } - if (200 !== $response->getStatusCode()) { + if (200 !== $statusCode) { $errorMessage = $response->getContent(false); $originalContent = $message->getSubject(); diff --git a/src/Symfony/Component/Notifier/Bridge/Octopush/OctopushTransport.php b/src/Symfony/Component/Notifier/Bridge/Octopush/OctopushTransport.php index 7e8b72f749698..be41b5c91092e 100644 --- a/src/Symfony/Component/Notifier/Bridge/Octopush/OctopushTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Octopush/OctopushTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SmsMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -74,7 +75,13 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - if (200 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Octopush server.', $response, 0, $e); + } + + if (200 !== $statusCode) { $error = $response->toArray(false); throw new TransportException('Unable to send the SMS: '.$error['error_code'], $response); diff --git a/src/Symfony/Component/Notifier/Bridge/SmsBiuras/SmsBiurasTransport.php b/src/Symfony/Component/Notifier/Bridge/SmsBiuras/SmsBiurasTransport.php index ad24d3cfa37b0..b47c5c216eba0 100644 --- a/src/Symfony/Component/Notifier/Bridge/SmsBiuras/SmsBiurasTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/SmsBiuras/SmsBiurasTransport.php @@ -18,6 +18,7 @@ use Symfony\Component\Notifier\Message\SmsMessage; use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; /** @@ -89,7 +90,13 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - if (200 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote SmsBiuras server.', $response, 0, $e); + } + + if (200 !== $statusCode) { throw new TransportException('Unable to send the SMS.', $response); } diff --git a/src/Symfony/Component/Notifier/Bridge/SpotHit/SpotHitTransport.php b/src/Symfony/Component/Notifier/Bridge/SpotHit/SpotHitTransport.php index 5767d17685681..13e56399b9f7e 100644 --- a/src/Symfony/Component/Notifier/Bridge/SpotHit/SpotHitTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/SpotHit/SpotHitTransport.php @@ -19,6 +19,8 @@ use Symfony\Component\Notifier\Transport\AbstractTransport; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface; +use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface; +use Symfony\Contracts\HttpClient\Exception\HttpExceptionInterface; use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface; use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; @@ -81,7 +83,13 @@ protected function doSend(MessageInterface $message): SentMessage ], ]); - $data = json_decode($response->getContent(), true); + try { + $data = $response->toArray(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote SpotHit server.', $response, 0, $e); + } catch (HttpExceptionInterface | DecodingExceptionInterface $e) { + throw new TransportException('Unexpected reply from the remote SpotHit server.', $response, 0, $e); + } if (!$data['resultat']) { $errors = \is_array($data['erreurs']) ? implode(',', $data['erreurs']) : $data['erreurs'];