From 1ed159601c1875956fb1ee2f7d10ea47d2f6d648 Mon Sep 17 00:00:00 2001 From: danilopolani Date: Wed, 2 Jul 2025 14:51:27 +0200 Subject: [PATCH 1/2] fix(webhooks): use correct messageId from MailGun --- src/Resources/LogResource.php | 3 ++- src/Webhooks/Strategies/MailgunStrategy.php | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Resources/LogResource.php b/src/Resources/LogResource.php index c18bc9e..01463e1 100644 --- a/src/Resources/LogResource.php +++ b/src/Resources/LogResource.php @@ -130,7 +130,8 @@ public static function table(Tables\Table $table): Tables\Table ) ->actions( Tables\Actions\ActionGroup::make(static::getTableActions()) - ); + ) + ->paginationPageOptions([10, 25, 50, 100]); } /** diff --git a/src/Webhooks/Strategies/MailgunStrategy.php b/src/Webhooks/Strategies/MailgunStrategy.php index aa748dc..fc174bc 100644 --- a/src/Webhooks/Strategies/MailgunStrategy.php +++ b/src/Webhooks/Strategies/MailgunStrategy.php @@ -3,6 +3,7 @@ namespace MailCarrier\Webhooks\Strategies; use Carbon\CarbonImmutable; +use Illuminate\Support\Arr; use Illuminate\Support\Facades\Config; use MailCarrier\Webhooks\Dto\IncomingWebhook; use MailCarrier\Webhooks\Dto\WebhookData; @@ -75,13 +76,14 @@ public function extract(array $payload): WebhookData } $eventData = $payload['event-data']; + $messageId = Arr::get($eventData, 'message.headers.message-id'); - if (!isset($eventData['id'], $eventData['event'], $eventData['timestamp'])) { + if (!isset($messageId, $eventData['event'], $eventData['timestamp'])) { throw new \InvalidArgumentException('Invalid Mailgun webhook payload: missing required fields'); } return new WebhookData( - messageId: $eventData['id'], + messageId: $messageId, eventName: $eventData['event'], date: CarbonImmutable::createFromTimestamp($eventData['timestamp']) ); From 323ca06c2825f019bfee15d07f09e36e6450acd8 Mon Sep 17 00:00:00 2001 From: danilopolani Date: Wed, 2 Jul 2025 15:00:50 +0200 Subject: [PATCH 2/2] fix --- src/Webhooks/Strategies/MailgunStrategy.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Webhooks/Strategies/MailgunStrategy.php b/src/Webhooks/Strategies/MailgunStrategy.php index fc174bc..032a5f5 100644 --- a/src/Webhooks/Strategies/MailgunStrategy.php +++ b/src/Webhooks/Strategies/MailgunStrategy.php @@ -77,8 +77,10 @@ public function extract(array $payload): WebhookData $eventData = $payload['event-data']; $messageId = Arr::get($eventData, 'message.headers.message-id'); + $event = Arr::get($eventData, 'event'); + $timestamp = Arr::get($eventData, 'timestamp'); - if (!isset($messageId, $eventData['event'], $eventData['timestamp'])) { + if (empty($messageId) || empty($event) || empty($timestamp)) { throw new \InvalidArgumentException('Invalid Mailgun webhook payload: missing required fields'); }