From 4d2eeb52b3bdef8ba7ff1ccf273b8ddb500c3c81 Mon Sep 17 00:00:00 2001 From: shiftinv Date: Sun, 4 Sep 2022 15:34:19 +0200 Subject: [PATCH] feat: add metadata headers to response --- lib/config.ts | 3 +++ lib/webhook.ts | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/lib/config.ts b/lib/config.ts index ba3503b..7749b2a 100644 --- a/lib/config.ts +++ b/lib/config.ts @@ -17,4 +17,7 @@ export default { maxWebhookRetries: parseInt(get("MAX_RETRIES", "3")), maxWebhookRetryMs: parseInt(get("MAX_RETRY_MS", "30000")), mainRedirect: get("MAIN_REDIRECT", null), + + // set by deno deploy + deployId: get("DENO_DEPLOYMENT_ID", ""), }; diff --git a/lib/webhook.ts b/lib/webhook.ts index c64e406..f6de1f0 100644 --- a/lib/webhook.ts +++ b/lib/webhook.ts @@ -47,5 +47,23 @@ export async function sendWebhook( log.warning(`retrying after ${resetms}ms (retry ${retries})`); await sleep(resetms); } while (true); + + // clone response to make headers mutable + res = new Response(res.body, res); + + // set metadata headers + const meta: Record = { + "deploy": config.deployId, + }; + if (retries) meta["retries"] = retries.toString(); + + setMetadata(res, meta); + return res; } + +function setMetadata(res: Response, meta: Record): void { + for (const [key, value] of Object.entries(meta)) { + res.headers.set(`x-webhook-filter-${key}`, value); + } +}