Skip to content

Commit ce8f8a5

Browse files
committed
feature #36611 Add Notifier SentMessage (jeremyFreeAgent)
This PR was squashed before being merged into the 5.2-dev branch. Discussion ---------- Add Notifier SentMessage | Q | A | ------------- | --- | Branch? | master | Bug fix? | no | New feature? | yes | Deprecations? | no | Tickets | | License | MIT | Doc PR | symfony/symfony-docs#13624 Like Mailer, Notifier returns now a SentMessage that contains the messageId (returned by the provider in the response). It contains also the body of the response as array to have more info about price, number of sms sent, status and so on. - [x] apply to bridges Commits ------- 5a6f053 Add Notifier SentMessage
2 parents a3900af + 5a6f053 commit ce8f8a5

31 files changed

+241
-51
lines changed

src/Symfony/Component/Notifier/Bridge/Firebase/FirebaseTransport.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Symfony\Component\Notifier\Exception\TransportException;
1717
use Symfony\Component\Notifier\Message\ChatMessage;
1818
use Symfony\Component\Notifier\Message\MessageInterface;
19+
use Symfony\Component\Notifier\Message\SentMessage;
1920
use Symfony\Component\Notifier\Transport\AbstractTransport;
2021
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
2122
use Symfony\Contracts\HttpClient\HttpClientInterface;
@@ -50,7 +51,7 @@ public function supports(MessageInterface $message): bool
5051
return $message instanceof ChatMessage;
5152
}
5253

53-
protected function doSend(MessageInterface $message): void
54+
protected function doSend(MessageInterface $message): SentMessage
5455
{
5556
if (!$message instanceof ChatMessage) {
5657
throw new LogicException(sprintf('The "%s" transport only supports instances of "%s" (instance of "%s" given).', __CLASS__, ChatMessage::class, get_debug_type($message)));
@@ -84,5 +85,12 @@ protected function doSend(MessageInterface $message): void
8485
if ($jsonContents && isset($jsonContents['results']['error'])) {
8586
throw new TransportException(sprintf('Unable to post the Firebase message: %s.', $jsonContents['error']), $response);
8687
}
88+
89+
$success = $response->toArray(false);
90+
91+
$message = new SentMessage($message, (string) $this);
92+
$message->setMessageId($success['results'][0]['message_id']);
93+
94+
return $message;
8795
}
8896
}

src/Symfony/Component/Notifier/Bridge/Firebase/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"require": {
1919
"php": ">=7.2.5",
2020
"symfony/http-client": "^4.3|^5.0",
21-
"symfony/notifier": "^5.0"
21+
"symfony/notifier": "^5.2"
2222
},
2323
"autoload": {
2424
"psr-4": { "Symfony\\Component\\Notifier\\Bridge\\Firebase\\": "" },

src/Symfony/Component/Notifier/Bridge/FreeMobile/FreeMobileTransport.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Component\Notifier\Exception\LogicException;
1515
use Symfony\Component\Notifier\Exception\TransportException;
1616
use Symfony\Component\Notifier\Message\MessageInterface;
17+
use Symfony\Component\Notifier\Message\SentMessage;
1718
use Symfony\Component\Notifier\Message\SmsMessage;
1819
use Symfony\Component\Notifier\Transport\AbstractTransport;
1920
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
@@ -51,7 +52,7 @@ public function supports(MessageInterface $message): bool
5152
return $message instanceof SmsMessage && $this->phone === $message->getPhone();
5253
}
5354

54-
protected function doSend(MessageInterface $message): void
55+
protected function doSend(MessageInterface $message): SentMessage
5556
{
5657
if (!$this->supports($message)) {
5758
throw new LogicException(sprintf('The "%s" transport only supports instances of "%s" (instance of "%s" given) and configured with your phone number.', __CLASS__, SmsMessage::class, \get_class($message)));
@@ -75,5 +76,7 @@ protected function doSend(MessageInterface $message): void
7576

7677
throw new TransportException(sprintf('Unable to send the SMS: error %d: ', $response->getStatusCode()).($errors[$response->getStatusCode()] ?? ''), $response);
7778
}
79+
80+
return new SentMessage($message, (string) $this);
7881
}
7982
}

src/Symfony/Component/Notifier/Bridge/FreeMobile/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"require": {
2020
"php": ">=7.2.5",
2121
"symfony/http-client": "^4.3|^5.1",
22-
"symfony/notifier": "^5.1"
22+
"symfony/notifier": "^5.2"
2323
},
2424
"autoload": {
2525
"psr-4": { "Symfony\\Component\\Notifier\\Bridge\\FreeMobile\\": "" },

src/Symfony/Component/Notifier/Bridge/Mattermost/MattermostTransport.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\Notifier\Exception\TransportException;
1616
use Symfony\Component\Notifier\Message\ChatMessage;
1717
use Symfony\Component\Notifier\Message\MessageInterface;
18+
use Symfony\Component\Notifier\Message\SentMessage;
1819
use Symfony\Component\Notifier\Transport\AbstractTransport;
1920
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
2021
use Symfony\Contracts\HttpClient\HttpClientInterface;
@@ -50,7 +51,7 @@ public function supports(MessageInterface $message): bool
5051
/**
5152
* @see https://api.mattermost.com
5253
*/
53-
protected function doSend(MessageInterface $message): void
54+
protected function doSend(MessageInterface $message): SentMessage
5455
{
5556
if (!$message instanceof ChatMessage) {
5657
throw new LogicException(sprintf('The "%s" transport only supports instances of "%s" (instance of "%s" given).', __CLASS__, ChatMessage::class, get_debug_type($message)));
@@ -74,5 +75,12 @@ protected function doSend(MessageInterface $message): void
7475

7576
throw new TransportException(sprintf('Unable to post the Mattermost message: %s (%s).', $result['message'], $result['id']), $response);
7677
}
78+
79+
$success = $response->toArray(false);
80+
81+
$message = new SentMessage($message, (string) $this);
82+
$message->setMessageId($success['id']);
83+
84+
return $message;
7785
}
7886
}

src/Symfony/Component/Notifier/Bridge/Mattermost/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"require": {
1919
"php": ">=7.2.5",
2020
"symfony/http-client": "^4.3|^5.0",
21-
"symfony/notifier": "^5.0"
21+
"symfony/notifier": "^5.2"
2222
},
2323
"autoload": {
2424
"psr-4": { "Symfony\\Component\\Notifier\\Bridge\\Mattermost\\": "" },

src/Symfony/Component/Notifier/Bridge/Nexmo/NexmoTransport.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Component\Notifier\Exception\LogicException;
1515
use Symfony\Component\Notifier\Exception\TransportException;
1616
use Symfony\Component\Notifier\Message\MessageInterface;
17+
use Symfony\Component\Notifier\Message\SentMessage;
1718
use Symfony\Component\Notifier\Message\SmsMessage;
1819
use Symfony\Component\Notifier\Transport\AbstractTransport;
1920
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
@@ -51,7 +52,7 @@ public function supports(MessageInterface $message): bool
5152
return $message instanceof SmsMessage;
5253
}
5354

54-
protected function doSend(MessageInterface $message): void
55+
protected function doSend(MessageInterface $message): SentMessage
5556
{
5657
if (!$message instanceof SmsMessage) {
5758
throw new LogicException(sprintf('The "%s" transport only supports instances of "%s" (instance of "%s" given).', __CLASS__, SmsMessage::class, get_debug_type($message)));
@@ -73,5 +74,12 @@ protected function doSend(MessageInterface $message): void
7374
throw new TransportException('Unable to send the SMS: '.$msg['error-text'].sprintf(' (code %s).', $msg['status']), $response);
7475
}
7576
}
77+
78+
$success = $response->toArray(false);
79+
80+
$message = new SentMessage($message, (string) $this);
81+
$message->setMessageId($success['messages'][0]['message-id']);
82+
83+
return $message;
7684
}
7785
}

src/Symfony/Component/Notifier/Bridge/Nexmo/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"require": {
1919
"php": ">=7.2.5",
2020
"symfony/http-client": "^4.3|^5.0",
21-
"symfony/notifier": "^5.0"
21+
"symfony/notifier": "^5.2"
2222
},
2323
"autoload": {
2424
"psr-4": { "Symfony\\Component\\Notifier\\Bridge\\Nexmo\\": "" },

src/Symfony/Component/Notifier/Bridge/OvhCloud/OvhCloudTransport.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Component\Notifier\Exception\LogicException;
1515
use Symfony\Component\Notifier\Exception\TransportException;
1616
use Symfony\Component\Notifier\Message\MessageInterface;
17+
use Symfony\Component\Notifier\Message\SentMessage;
1718
use Symfony\Component\Notifier\Message\SmsMessage;
1819
use Symfony\Component\Notifier\Transport\AbstractTransport;
1920
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
@@ -53,7 +54,7 @@ public function supports(MessageInterface $message): bool
5354
return $message instanceof SmsMessage;
5455
}
5556

56-
protected function doSend(MessageInterface $message): void
57+
protected function doSend(MessageInterface $message): SentMessage
5758
{
5859
if (!$message instanceof SmsMessage) {
5960
throw new LogicException(sprintf('The "%s" transport only supports instances of "%s" (instance of "%s" given).', __CLASS__, SmsMessage::class, get_debug_type($message)));
@@ -90,6 +91,13 @@ protected function doSend(MessageInterface $message): void
9091

9192
throw new TransportException(sprintf('Unable to send the SMS: %s.', $error['message']), $response);
9293
}
94+
95+
$success = $response->toArray(false);
96+
97+
$message = new SentMessage($message, (string) $this);
98+
$message->setMessageId($success['ids'][0]);
99+
100+
return $message;
93101
}
94102

95103
/**

src/Symfony/Component/Notifier/Bridge/OvhCloud/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"require": {
1919
"php": ">=7.2.5",
2020
"symfony/http-client": "^4.3|^5.0",
21-
"symfony/notifier": "^5.0"
21+
"symfony/notifier": "^5.2"
2222
},
2323
"autoload": {
2424
"psr-4": { "Symfony\\Component\\Notifier\\Bridge\\OvhCloud\\": "" },

0 commit comments

Comments
 (0)