Skip to content

Commit 89b2949

Browse files
committed
Add missing Sweego Mailer Bridge webhook events
1 parent d2d869f commit 89b2949

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/Symfony/Component/Mailer/Bridge/Sweego/RemoteEvent/SweegoPayloadConverter.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,32 @@
1313

1414
use Symfony\Component\RemoteEvent\Event\Mailer\AbstractMailerEvent;
1515
use Symfony\Component\RemoteEvent\Event\Mailer\MailerDeliveryEvent;
16+
use Symfony\Component\RemoteEvent\Event\Mailer\MailerEngagementEvent;
1617
use Symfony\Component\RemoteEvent\Exception\ParseException;
1718
use Symfony\Component\RemoteEvent\PayloadConverterInterface;
1819

1920
final class SweegoPayloadConverter implements PayloadConverterInterface
2021
{
2122
public function convert(array $payload): AbstractMailerEvent
2223
{
23-
if (\in_array($payload['event_type'], ['email_sent', 'delivered'], true)) {
24+
if (\in_array($payload['event_type'], ['email_sent', 'delivered', 'soft-bounce', 'hard_bounce'], true)) {
2425
$name = match ($payload['event_type']) {
2526
'email_sent' => MailerDeliveryEvent::RECEIVED,
2627
'delivered' => MailerDeliveryEvent::DELIVERED,
28+
'soft-bounce', 'hard_bounce' => MailerDeliveryEvent::BOUNCE,
2729
};
2830

2931
$event = new MailerDeliveryEvent($name, $payload['headers']['x-transaction-id'], $payload);
32+
} else {
33+
$name = match ($payload['event_type']) {
34+
'list_unsub' => MailerEngagementEvent::UNSUBSCRIBE,
35+
'complaint' => MailerEngagementEvent::SPAM,
36+
'email_clicked' => MailerEngagementEvent::CLICK,
37+
'email_opened' => MailerEngagementEvent::OPEN,
38+
default => throw new ParseException(\sprintf('Unsupported event "%s".', $payload['event_type'])),
39+
};
40+
41+
$event = new MailerEngagementEvent($name, $payload['headers']['x-transaction-id'], $payload);
3042
}
3143

3244
if (!$date = \DateTimeImmutable::createFromFormat(\DATE_ATOM, $payload['timestamp'])) {

0 commit comments

Comments
 (0)