diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransport.php b/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransport.php index 61b5442c07555..7c9e64dd49211 100644 --- a/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransport.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; /** @@ -77,17 +78,23 @@ protected function doSend(MessageInterface $message): SentMessage 'json' => array_filter($options), ]); - if (204 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Discord server.', $response, 0, $e); + } + + if (204 !== $statusCode) { $result = $response->toArray(false); - if (401 === $response->getStatusCode()) { + if (401 === $statusCode) { $originalContent = $message->getSubject(); $errorMessage = $result['message']; $errorCode = $result['code']; throw new TransportException(sprintf('Unable to post the Discord message: "%s" (%d: "%s").', $originalContent, $errorCode, $errorMessage), $response); } - if (400 === $response->getStatusCode()) { + if (400 === $statusCode) { $originalContent = $message->getSubject(); $errorMessage = ''; @@ -100,7 +107,7 @@ protected function doSend(MessageInterface $message): SentMessage throw new TransportException(sprintf('Unable to post the Discord message: "%s" (%s).', $originalContent, $errorMessage), $response); } - throw new TransportException(sprintf('Unable to post the Discord message: "%s" (Status Code: %d).', $message->getSubject(), $response->getStatusCode()), $response); + throw new TransportException(sprintf('Unable to post the Discord message: "%s" (Status Code: %d).', $message->getSubject(), $statusCode), $response); } return new SentMessage($message, (string) $this); diff --git a/src/Symfony/Component/Notifier/Bridge/Esendex/EsendexTransport.php b/src/Symfony/Component/Notifier/Bridge/Esendex/EsendexTransport.php index e4a944779e136..9d9c052a9d354 100644 --- a/src/Symfony/Component/Notifier/Bridge/Esendex/EsendexTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Esendex/EsendexTransport.php @@ -20,6 +20,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; /** @@ -75,11 +76,17 @@ 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 Esendex server.', $response, 0, $e); + } + + if (200 === $statusCode) { return new SentMessage($message, (string) $this); } - $message = sprintf('Unable to send the SMS: error %d.', $response->getStatusCode()); + $message = sprintf('Unable to send the SMS: error %d.', $statusCode); try { $result = $response->toArray(false); diff --git a/src/Symfony/Component/Notifier/Bridge/Firebase/FirebaseTransport.php b/src/Symfony/Component/Notifier/Bridge/Firebase/FirebaseTransport.php index e1e1935568d2c..8722615ef4538 100644 --- a/src/Symfony/Component/Notifier/Bridge/Firebase/FirebaseTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Firebase/FirebaseTransport.php @@ -19,6 +19,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; /** @@ -74,10 +75,16 @@ protected function doSend(MessageInterface $message): SentMessage 'json' => array_filter($options), ]); + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Forebase server.', $response, 0, $e); + } + $contentType = $response->getHeaders(false)['content-type'][0] ?? ''; $jsonContents = 0 === strpos($contentType, 'application/json') ? $response->toArray(false) : null; - if (200 !== $response->getStatusCode()) { + if (200 !== $statusCode) { $errorMessage = $jsonContents ? $jsonContents['results']['error'] : $response->getContent(false); throw new TransportException('Unable to post the Firebase message: '.$errorMessage, $response); diff --git a/src/Symfony/Component/Notifier/Bridge/FreeMobile/FreeMobileTransport.php b/src/Symfony/Component/Notifier/Bridge/FreeMobile/FreeMobileTransport.php index cd7e96337ba67..2c5627a3bb765 100644 --- a/src/Symfony/Component/Notifier/Bridge/FreeMobile/FreeMobileTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/FreeMobile/FreeMobileTransport.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; /** @@ -68,7 +69,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 FreeMobile server.', $response, 0, $e); + } + + if (200 !== $statusCode) { $errors = [ 400 => 'Missing required parameter or wrongly formatted message.', 402 => 'Too many messages have been sent too fast.', @@ -76,7 +83,7 @@ protected function doSend(MessageInterface $message): SentMessage 500 => 'Server error, please try again later.', ]; - throw new TransportException(sprintf('Unable to send the SMS: error %d: ', $response->getStatusCode()).($errors[$response->getStatusCode()] ?? ''), $response); + throw new TransportException(sprintf('Unable to send the SMS: error %d: ', $statusCode).($errors[$statusCode] ?? ''), $response); } return new SentMessage($message, (string) $this); diff --git a/src/Symfony/Component/Notifier/Bridge/GoogleChat/GoogleChatTransport.php b/src/Symfony/Component/Notifier/Bridge/GoogleChat/GoogleChatTransport.php index 059ddee54f091..0b67b7e567026 100644 --- a/src/Symfony/Component/Notifier/Bridge/GoogleChat/GoogleChatTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/GoogleChat/GoogleChatTransport.php @@ -19,6 +19,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; /** @@ -121,14 +122,20 @@ protected function doSend(MessageInterface $message): SentMessage 'json' => array_filter($options), ]); + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote GoogleChat server.', $response, 0, $e); + } + try { $result = $response->toArray(false); } catch (JsonException $jsonException) { - throw new TransportException('Unable to post the Google Chat message: Invalid response.', $response, $response->getStatusCode(), $jsonException); + throw new TransportException('Unable to post the Google Chat message: Invalid response.', $response, $statusCode, $jsonException); } - if (200 !== $response->getStatusCode()) { - throw new TransportException(sprintf('Unable to post the Google Chat message: "%s".', $result['error']['message'] ?? $response->getContent(false)), $response, $result['error']['code'] ?? $response->getStatusCode()); + if (200 !== $statusCode) { + throw new TransportException(sprintf('Unable to post the Google Chat message: "%s".', $result['error']['message'] ?? $response->getContent(false)), $response, $result['error']['code'] ?? $statusCode); } if (!\array_key_exists('name', $result)) { diff --git a/src/Symfony/Component/Notifier/Bridge/Infobip/InfobipTransport.php b/src/Symfony/Component/Notifier/Bridge/Infobip/InfobipTransport.php index cbeae8b57413f..09ac80b492d4a 100644 --- a/src/Symfony/Component/Notifier/Bridge/Infobip/InfobipTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Infobip/InfobipTransport.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; /** @@ -76,7 +77,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 Infobip server.', $response, 0, $e); + } + + if (200 !== $statusCode) { $content = $response->toArray(false); $errorMessage = $content['requestError']['serviceException']['messageId'] ?? ''; $errorInfo = $content['requestError']['serviceException']['text'] ?? ''; diff --git a/src/Symfony/Component/Notifier/Bridge/LinkedIn/LinkedInTransport.php b/src/Symfony/Component/Notifier/Bridge/LinkedIn/LinkedInTransport.php index 1e724846ef705..7a63dff03d385 100644 --- a/src/Symfony/Component/Notifier/Bridge/LinkedIn/LinkedInTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/LinkedIn/LinkedInTransport.php @@ -19,6 +19,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; /** @@ -81,7 +82,13 @@ protected function doSend(MessageInterface $message): SentMessage 'json' => array_filter($opts ? $opts->toArray() : $this->bodyFromMessageWithNoOption($message)), ]); - if (201 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote LinkedIn server.', $response, 0, $e); + } + + if (201 !== $statusCode) { throw new TransportException(sprintf('Unable to post the Linkedin message: "%s".', $response->getContent(false)), $response); } diff --git a/src/Symfony/Component/Notifier/Bridge/Mattermost/MattermostTransport.php b/src/Symfony/Component/Notifier/Bridge/Mattermost/MattermostTransport.php index 18db05cc7a87d..29e87688747f5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Mattermost/MattermostTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Mattermost/MattermostTransport.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; /** @@ -73,7 +74,13 @@ protected function doSend(MessageInterface $message): SentMessage 'json' => array_filter($options), ]); - if (201 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Mattermost server.', $response, 0, $e); + } + + if (201 !== $statusCode) { $result = $response->toArray(false); throw new TransportException(sprintf('Unable to post the Mattermost message: %s (%s).', $result['message'], $result['id']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/Mobyt/MobytTransport.php b/src/Symfony/Component/Notifier/Bridge/Mobyt/MobytTransport.php index 18b37e50065f5..c35a98bea2cad 100644 --- a/src/Symfony/Component/Notifier/Bridge/Mobyt/MobytTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Mobyt/MobytTransport.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; /** @@ -81,11 +82,17 @@ protected function doSend(MessageInterface $message): SentMessage 'body' => json_encode(array_filter($options)), ]); - if (401 === $response->getStatusCode() || 404 === $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Mobyt server.', $response, 0, $e); + } + + if (401 === $statusCode || 404 === $statusCode) { throw new TransportException(sprintf('Unable to send the SMS: "%s". Check your credentials.', $message->getSubject()), $response); } - if (201 !== $response->getStatusCode()) { + if (201 !== $statusCode) { $error = $response->toArray(false); throw new TransportException(sprintf('Unable to send the SMS: "%s".', $error['result']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/Nexmo/NexmoTransport.php b/src/Symfony/Component/Notifier/Bridge/Nexmo/NexmoTransport.php index d0faded96e894..53883fd277909 100644 --- a/src/Symfony/Component/Notifier/Bridge/Nexmo/NexmoTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Nexmo/NexmoTransport.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; /** @@ -68,7 +69,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 Nexmo server.', $response, 0, $e); + } + foreach ($result['messages'] as $msg) { if ($msg['status'] ?? false) { throw new TransportException('Unable to send the SMS: '.$msg['error-text'].sprintf(' (code %s).', $msg['status']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/OvhCloud/OvhCloudTransport.php b/src/Symfony/Component/Notifier/Bridge/OvhCloud/OvhCloudTransport.php index 435ec50d5131d..a075820a0768c 100644 --- a/src/Symfony/Component/Notifier/Bridge/OvhCloud/OvhCloudTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/OvhCloud/OvhCloudTransport.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; /** @@ -88,7 +89,13 @@ protected function doSend(MessageInterface $message): SentMessage 'body' => $body, ]); - if (200 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote OvhCloud server.', $response, 0, $e); + } + + if (200 !== $statusCode) { $error = $response->toArray(false); throw new TransportException(sprintf('Unable to send the SMS: %s.', $error['message']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/RocketChat/RocketChatTransport.php b/src/Symfony/Component/Notifier/Bridge/RocketChat/RocketChatTransport.php index fdf3eafd4a9c9..6fd4143ec009d 100644 --- a/src/Symfony/Component/Notifier/Bridge/RocketChat/RocketChatTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/RocketChat/RocketChatTransport.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; /** @@ -81,7 +82,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 RocketChat server.', $response, 0, $e); + } + + if (200 !== $statusCode) { throw new TransportException(sprintf('Unable to post the RocketChat message: %s.', $response->getContent(false)), $response); } diff --git a/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransport.php b/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransport.php index 7964d4e20cdfb..f15b6127a467e 100644 --- a/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransport.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; /** @@ -67,7 +68,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 Sendinblue server.', $response, 0, $e); + } + + if (201 !== $statusCode) { $error = $response->toArray(false); throw new TransportException('Unable to send the SMS: '.$error['message'], $response); diff --git a/src/Symfony/Component/Notifier/Bridge/Sinch/SinchTransport.php b/src/Symfony/Component/Notifier/Bridge/Sinch/SinchTransport.php index 10f272db40258..bbbde40327f42 100644 --- a/src/Symfony/Component/Notifier/Bridge/Sinch/SinchTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Sinch/SinchTransport.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; /** @@ -68,7 +69,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 Sinch server.', $response, 0, $e); + } + + if (201 !== $statusCode) { $error = $response->toArray(false); throw new TransportException(sprintf('Unable to send the SMS: %s (%s).', $error['text'], $error['code']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php b/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php index cae1d38c87bcb..4325ae95350d4 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.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; /** @@ -85,7 +86,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 Slack server.', $response, 0, $e); + } + + if (200 !== $statusCode) { throw new TransportException(sprintf('Unable to post the Slack message: "%s".', $response->getContent(false)), $response); } diff --git a/src/Symfony/Component/Notifier/Bridge/Smsapi/SmsapiTransport.php b/src/Symfony/Component/Notifier/Bridge/Smsapi/SmsapiTransport.php index bab366232bfe3..8b7176f53d255 100644 --- a/src/Symfony/Component/Notifier/Bridge/Smsapi/SmsapiTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Smsapi/SmsapiTransport.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; /** @@ -67,7 +68,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 Smsapi server.', $response, 0, $e); + } + + if (200 !== $statusCode) { $error = $response->toArray(false); throw new TransportException(sprintf('Unable to send the SMS: "%s".', $error['message']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransport.php b/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransport.php index 9b5623170caa0..50391ccdcddc2 100644 --- a/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransport.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; /** @@ -88,7 +89,13 @@ protected function doSend(MessageInterface $message): SentMessage 'json' => array_filter($options), ]); - if (200 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Telegram server.', $response, 0, $e); + } + + if (200 !== $statusCode) { $result = $response->toArray(false); throw new TransportException('Unable to post the Telegram message: '.$result['description'].sprintf(' (code %s).', $result['error_code']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/Twilio/TwilioTransport.php b/src/Symfony/Component/Notifier/Bridge/Twilio/TwilioTransport.php index 3f7e73d1367da..240003bda57fa 100644 --- a/src/Symfony/Component/Notifier/Bridge/Twilio/TwilioTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Twilio/TwilioTransport.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; /** @@ -68,7 +69,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 Twilio server.', $response, 0, $e); + } + + if (201 !== $statusCode) { $error = $response->toArray(false); throw new TransportException('Unable to send the SMS: '.$error['message'].sprintf(' (see %s).', $error['more_info']), $response); diff --git a/src/Symfony/Component/Notifier/Bridge/Zulip/ZulipTransport.php b/src/Symfony/Component/Notifier/Bridge/Zulip/ZulipTransport.php index 9e1315485edc2..42edbba3afe37 100644 --- a/src/Symfony/Component/Notifier/Bridge/Zulip/ZulipTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Zulip/ZulipTransport.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; /** @@ -85,7 +86,13 @@ protected function doSend(MessageInterface $message): SentMessage 'body' => $options, ]); - if (200 !== $response->getStatusCode()) { + try { + $statusCode = $response->getStatusCode(); + } catch (TransportExceptionInterface $e) { + throw new TransportException('Could not reach the remote Zulip server.', $response, 0, $e); + } + + if (200 !== $statusCode) { $result = $response->toArray(false); throw new TransportException(sprintf('Unable to post the Zulip message: "%s" (%s).', $result['msg'], $result['code']), $response);