From: Louis Jeckel Date: Tue, 14 Apr 2020 14:43:47 +0000 (+0200) Subject: async webhook X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=c770f7b09825bf48850117912d9d3de15b17f451;p=psq.git async webhook --- diff --git a/app/Events/DispatchMailgunEvent.php b/app/Events/DispatchMailgunEvent.php new file mode 100644 index 0000000..b7cb510 --- /dev/null +++ b/app/Events/DispatchMailgunEvent.php @@ -0,0 +1,83 @@ +batch_id = Str::after(Arr::first($tags, function($tag) { + return Str::startsWith($tag, 'batch_id_'); + }), 'batch_id_'); + + $event = MailgunEvent::updateOrCreate([ + 'event' => Arr::get($webhookData, 'event-data.event'), + 'recipient' => Arr::get($webhookData, 'event-data.recipient'), + 'email_batch_id' => $this->batch_id + ]); + + $event->touch(); + + $this->data = $event; + } + + /** + * Get the channels the event should broadcast on. + * + * @return \Illuminate\Broadcasting\Channel|array + */ + public function broadcastOn() + { + return new PrivateChannel('emailBatch.'.$this->batch_id); + } + + public function broadcastWhen() + { + return $this->broadcast; + } + + /** + * The event's broadcast name. + */ + public function broadcastAs() + { + return 'mailgun.event'; + } +} diff --git a/app/Events/MailgunWebhook.php b/app/Events/MailgunWebhook.php new file mode 100644 index 0000000..a3f4f91 --- /dev/null +++ b/app/Events/MailgunWebhook.php @@ -0,0 +1,30 @@ +webhookData = $webhookData; + } + + +} diff --git a/app/Events/ProcessMailgunWebhook.php b/app/Events/ProcessMailgunWebhook.php deleted file mode 100644 index 9346d65..0000000 --- a/app/Events/ProcessMailgunWebhook.php +++ /dev/null @@ -1,83 +0,0 @@ -batch_id = Str::after(Arr::first($tags, function($tag) { - return Str::startsWith($tag, 'batch_id_'); - }), 'batch_id_'); - - $event = MailgunEvent::updateOrCreate([ - 'event' => Arr::get($webhookData, 'event-data.event'), - 'recipient' => Arr::get($webhookData, 'event-data.recipient'), - 'email_batch_id' => $this->batch_id - ]); - - $event->touch(); - - $this->data = $event; - } - - /** - * Get the channels the event should broadcast on. - * - * @return \Illuminate\Broadcasting\Channel|array - */ - public function broadcastOn() - { - return new PrivateChannel('emailBatch.'.$this->batch_id); - } - - public function broadcastWhen() - { - return $this->broadcast; - } - - /** - * The event's broadcast name. - */ - public function broadcastAs() - { - return 'mailgun.event'; - } -} diff --git a/app/Http/Controllers/WebhookController.php b/app/Http/Controllers/WebhookController.php index bb25353..cb80268 100644 --- a/app/Http/Controllers/WebhookController.php +++ b/app/Http/Controllers/WebhookController.php @@ -2,14 +2,15 @@ namespace App\Http\Controllers; -use App\Events\ProcessMailgunWebhook; +use App\Events\DispatchMailgunEvent; +use App\Events\MailgunWebhook; use Illuminate\Http\Request; class WebhookController extends Controller { public function mailgunEvent(Request $request) { - event(new ProcessMailgunWebhook($request->toArray())); + event(new MailgunWebhook($request->toArray())); return response('ok', 200); } @@ -27,7 +28,7 @@ class WebhookController extends Controller ] ]; - event(new ProcessMailgunWebhook($data)); + event(new DispatchMailgunEvent($data)); return response('ok', 200); diff --git a/app/Listeners/ProcessMailgunWebhook.php b/app/Listeners/ProcessMailgunWebhook.php new file mode 100644 index 0000000..8b18d7e --- /dev/null +++ b/app/Listeners/ProcessMailgunWebhook.php @@ -0,0 +1,32 @@ +webhookData)); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 45306b9..e3c91a0 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -6,8 +6,10 @@ use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Event; -use App\Events\ProcessMailgunWebhook; +use App\Events\DispatchMailgunEvent; use App\Events\ProcessBatch; +use App\Events\MailgunWebhook; +use App\Listeners\ProcessMailgunWebhook; class EventServiceProvider extends ServiceProvider { @@ -20,7 +22,8 @@ class EventServiceProvider extends ServiceProvider Registered::class => [ SendEmailVerificationNotification::class, ], - ProcessMailgunWebhook::class => [], + MailgunWebhook::class => [ProcessMailgunWebhook::class], + DispatchMailgunEvent::class => [], ProcessBatch::class => [], ];