3
3
namespace RenokiCo \AwsWebhooks \Http \Controllers ;
4
4
5
5
use Illuminate \Http \Request ;
6
+ use Illuminate \Support \Str ;
6
7
use Rennokki \LaravelSnsEvents \Http \Controllers \SnsController ;
7
8
8
9
class SesWebhook extends SnsController
9
10
{
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
-
28
11
/**
29
12
* Handle logic at the controller level on notification.
30
13
*
@@ -38,130 +21,13 @@ protected function onNotification(array $snsMessage, Request $request): void
38
21
39
22
$ eventType = $ decodedMessage ['eventType ' ] ?? null ;
40
23
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 );
63
25
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
+ }
166
32
}
167
33
}
0 commit comments