33namespace RenokiCo \AwsWebhooks \Http \Controllers ;
44
55use Illuminate \Http \Request ;
6+ use Illuminate \Support \Str ;
67use Rennokki \LaravelSnsEvents \Http \Controllers \SnsController ;
78
89class SesWebhook extends SnsController
910{
10- /**
11- * Associate each SNS `eventType` value
12- * with a callable method from this class.
13- *
14- * @var array
15- */
16- public static $ eventTypesWithCalledMethod = [
17- 'Bounce ' => 'onBounce ' ,
18- 'Complaint ' => 'onComplaint ' ,
19- 'Delivery ' => 'onDelivery ' ,
20- 'Send ' => 'onSend ' ,
21- 'Reject ' => 'onReject ' ,
22- 'Open ' => 'onOpen ' ,
23- 'Click ' => 'onClick ' ,
24- 'Rendering Failure ' => 'onRenderingFailure ' ,
25- 'DeliveryDelay ' => 'onDeliveryDelay ' ,
26- ];
27-
2811 /**
2912 * Handle logic at the controller level on notification.
3013 *
@@ -38,130 +21,13 @@ protected function onNotification(array $snsMessage, Request $request): void
3821
3922 $ eventType = $ decodedMessage ['eventType ' ] ?? null ;
4023
41- foreach (static ::$ eventTypesWithCalledMethod as $ callableEventType => $ methodToCall ) {
42- if ($ eventType === $ callableEventType ) {
43- call_user_func (
44- [$ this , $ methodToCall ],
45- $ decodedMessage , $ snsMessage , $ request
46- );
47- }
48- }
49- }
50-
51- /**
52- * Handle the Bounce event.
53- *
54- * @param array $message
55- * @param array $originalMessage
56- * @param \Illuminate\Http\Request $request
57- * @return void
58- */
59- protected function onBounce (array $ message , array $ originalMessage , Request $ request )
60- {
61- //
62- }
24+ $ methodToCall = 'on ' .Str::studly ($ eventType );
6325
64- /**
65- * Handle the Complaint event.
66- *
67- * @param array $message
68- * @param array $originalMessage
69- * @param \Illuminate\Http\Request $request
70- * @return void
71- */
72- protected function onComplaint (array $ message , array $ originalMessage , Request $ request )
73- {
74- //
75- }
76-
77- /**
78- * Handle the Delivery event.
79- *
80- * @param array $message
81- * @param array $originalMessage
82- * @param \Illuminate\Http\Request $request
83- * @return void
84- */
85- protected function onDelivery (array $ message , array $ originalMessage , Request $ request )
86- {
87- //
88- }
89-
90- /**
91- * Handle the Send event.
92- *
93- * @param array $message
94- * @param array $originalMessage
95- * @param \Illuminate\Http\Request $request
96- * @return void
97- */
98- protected function onSend (array $ message , array $ originalMessage , Request $ request )
99- {
100- //
101- }
102-
103- /**
104- * Handle the Reject event.
105- *
106- * @param array $message
107- * @param array $originalMessage
108- * @param \Illuminate\Http\Request $request
109- * @return void
110- */
111- protected function onReject (array $ message , array $ originalMessage , Request $ request )
112- {
113- //
114- }
115-
116- /**
117- * Handle the Open event.
118- *
119- * @param array $message
120- * @param array $originalMessage
121- * @param \Illuminate\Http\Request $request
122- * @return void
123- */
124- protected function onOpen (array $ message , array $ originalMessage , Request $ request )
125- {
126- //
127- }
128-
129- /**
130- * Handle the Click event.
131- *
132- * @param array $message
133- * @param array $originalMessage
134- * @param \Illuminate\Http\Request $request
135- * @return void
136- */
137- protected function onClick (array $ message , array $ originalMessage , Request $ request )
138- {
139- //
140- }
141-
142- /**
143- * Handle the Rendering Failure event.
144- *
145- * @param array $message
146- * @param array $originalMessage
147- * @param \Illuminate\Http\Request $request
148- * @return void
149- */
150- protected function onRenderingFailure (array $ message , array $ originalMessage , Request $ request )
151- {
152- //
153- }
154-
155- /**
156- * Handle the DeliveryDelay event.
157- *
158- * @param array $message
159- * @param array $originalMessage
160- * @param \Illuminate\Http\Request $request
161- * @return void
162- */
163- protected function onDeliveryDelay (array $ message , array $ originalMessage , Request $ request )
164- {
165- //
26+ if (method_exists ($ this , $ methodToCall )) {
27+ call_user_func (
28+ [$ this , $ methodToCall ],
29+ $ decodedMessage , $ snsMessage , $ request
30+ );
31+ }
16632 }
16733}
0 commit comments