Slide 31
Slide 31 text
final class MailgunPayloadConverter implements PayloadConverterInterface
{
/** @return AbstractMailerEvent */
public function convert(array $payload): Event
{
if (in_array($payload['event'], ['failed', 'accepted', 'rejected', 'delivered'])) {
// ...
} else {
$event = match ($payload['event']) {
'clicked' => MailerEngagementEvent::CLICK,
// ...
default => throw new RejectWebhookException(406, sprintf('Not supported event "%s".', $payload['event']))
};
$wh = new MailerEngagementEvent($event, $payload['id'], $payload);
}
if (!$date = \DateTimeImmutable::createFromFormat('U.u', $payload['timestamp'])) {
throw new RejectWebhookException(406, sprintf('Invalid date "%s".', $date));
}
$wh->setRecipientEmail($payload['recipient']);
$wh->setTags($payload['tags']);
// ...
3 Payload Parsing & Conversion
Where the standardization happens!