C#
Verifikoni webhook-ët
Kontrolloni nënshkrimin e një dorëzimi para se t'i besoni asaj që thotë.
Verifikoni një dorëzim
using OpenEmail; var builder = WebApplication.CreateBuilder(args);var app = builder.Build();var secret = builder.Configuration["OPENEMAIL_WEBHOOK_SECRET"] ?? string.Empty; app.MapPost("/webhooks/openemail", async (HttpRequest request) =>{ using var reader = new StreamReader(request.Body); var payload = await reader.ReadToEndAsync(); try { var delivery = OpenEmailClient.VerifyWebhookSignature(payload, request.Headers["X-OpenEmail-Signature"], secret); app.Logger.LogInformation("{Type} {Id}", (string?)delivery["type"], (string?)delivery["id"]); return Results.NoContent(); } catch (OpenEmailWebhookException) { return Results.BadRequest(); }}); app.Run();OpenEmailClient.VerifyWebhookSignature() kontrollon HMAC-un e kokës mbi vulën kohore dhe trupin në kohë konstante, dhe e kthen ngjarjen si një JsonObject. Argumenti i dytë është vlera e kokës X-OpenEmail-Signature, dhe mbingarkesa të tjera marrin vetë kokat e kërkesës. Sekreti është ai që ktheu client.Webhooks.CreateAsync().
Jepni trupin e papërpunuar, pikërisht siç mbërriti. Një trup që është analizuar dhe koduar sërish nuk përputhet më me nënshkrimin e vet.
Dorëzime të vjetra
var payload = """{"id":"evt_1","type":"email.received"}"""; try{ OpenEmailClient.VerifyWebhookSignature(payload, "t=1767225600,v1=5f2d", "whsec_example", toleranceSeconds: 60);}catch (OpenEmailWebhookException error){ Console.WriteLine($"refused: {error.Message}");}Një dorëzim më i vjetër se pesë minuta refuzohet, kështu që një kërkesë e kapur nuk mund të riluhet më vonë. toleranceSeconds: i ndryshon pesë minutat, dhe zeroja pranon një dorëzim të çdo moshe.
- Një kokë që mungon ose është e keqformuar, një nënshkrim që nuk përputhet dhe një dorëzim tepër i vjetër hedhin të gjitha
OpenEmailWebhookException. - Pasi një sekret rrotullohet, një dorëzim mund të mbajë më shumë se një nënshkrim, dhe mjafton që njëri të përputhet.
- Përgjigjuni shpejt me një status 2xx. Një dorëzim që merr çdo përgjigje tjetër riprovohet më vonë.