Skip to content

Commit

Permalink
soppresso webhook aws ses, aggiunto webhook scaleway
Browse files Browse the repository at this point in the history
  • Loading branch information
madbob committed Aug 4, 2024
1 parent 1c0dce6 commit b62d7e7
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 36 deletions.
78 changes: 43 additions & 35 deletions code/app/Http/Controllers/MailController.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,41 +56,6 @@ private function registerBounce($event, $email, $message)
}
}

public function postStatusSES(Request $request)
{
if (env('MAIL_MAILER') == 'ses') {
$message = Message::fromRawPostData();
$validator = new MessageValidator();

try {
$validator->validate($message);
}
catch (InvalidSnsMessageException $e) {
Log::error('SNS Message Validation Error: ' . $e->getMessage());
abort(404);
}

if ($message['Type'] === 'SubscriptionConfirmation') {
Http::get($message['SubscribeURL']);
}
else if ($message['Type'] === 'Notification') {
$data = json_decode($message['Message']);
$event = $data->notificationType;

if ($event == 'Bounce') {
try {
$email = $data->bounce->bouncedRecipients[0]->emailAddress;
$message = $data->bounce->bouncedRecipients[0]->diagnosticCode ?? '???';
$this->registerBounce($event, $email, $message);
}
catch(\Exception $e) {
Log::error('Notifica SNS illeggibile: ' . $e->getMessage() . ' - ' . print_r($data, true));
}
}
}
}
}

public function postStatusSendinblue(Request $request)
{
if (env('MAIL_MAILER') == 'sendinblue') {
Expand Down Expand Up @@ -120,4 +85,47 @@ public function postStatusSendinblue(Request $request)
}
}
}

public function postStatusScaleway(Request $request)
{
if (env('MAIL_MAILER') == 'scaleway') {
$api_endpoint = 'https://api.scaleway.com/transactional-email/v1alpha1/regions/fr-par/webhooks';

$message = Message::fromRawPostData();
$validator = new MessageValidator();

try {
$validator->validate($message);
}
catch (InvalidSnsMessageException $e) {
Log::error('SNS Message Validation Error: ' . $e->getMessage());
abort(404);
}

try {
$body = json_decode($request->getContent());

if ($body) {
/*
Per automatizzare la procedura di conferma della
registrazione del webhook
*/
if (isset($body->SubscribeURL)) {
@file_get_contents($body->SubscribeURL);
return;
}
else {
$payload = json_decode($body->Message);
$event = $payload->type;
$email = $payload->email_to;
$message = $payload->email_error;
$this->registerBounce($event, $email, $message);
}
}
}
catch(\Exception $e) {
Log::error('Notifica Scaleway illeggibile: ' . $e->getMessage() . ' - ' . print_r($request->all(), true));
}
}
}
}
2 changes: 1 addition & 1 deletion code/routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@

Route::get('payment/status/satispay', 'PaymentController@statusPaymentSatispay')->name('payment.status_satispay');

Route::post('mail/status/aws', 'MailController@postStatusSES');
Route::post('mail/status/sib', 'MailController@postStatusSendinblue');
Route::post('mail/status/sway', 'MailController@postStatusScaleway');

Route::middleware(['auth'])->group(function() {
Route::get('users/blocked', 'UsersController@blocked')->name('users.blocked');
Expand Down

0 comments on commit b62d7e7

Please sign in to comment.