From 4a250a232c47434d482f024b3a1948272f5697f3 Mon Sep 17 00:00:00 2001 From: Zdravko Iliev <zdravko.iliev@vereign.com> Date: Tue, 20 Feb 2024 15:51:10 +0000 Subject: [PATCH] feat: [HIN] handle multiple webhooks --- libs/askar/src/agent.utils.ts | 45 ++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/libs/askar/src/agent.utils.ts b/libs/askar/src/agent.utils.ts index c7cf7805..3ae64575 100644 --- a/libs/askar/src/agent.utils.ts +++ b/libs/askar/src/agent.utils.ts @@ -52,7 +52,7 @@ import { AskarModule } from "@aries-framework/askar"; import { ariesAskar } from "@hyperledger/aries-askar-nodejs"; import { Key as AskarKey, KeyAlgs } from "@hyperledger/aries-askar-shared"; import { IConfAgent } from "@ocm-engine/config"; -import axios from "axios"; +import axios, { AxiosResponse } from "axios"; import { catchError, filter, @@ -604,13 +604,40 @@ export const webHookHandler = async ( addr: string, ev: TrustPingResponseReceivedEvent, ) => { - try { - await axios.post(addr, { - thid: ev.payload.message.threadId, - connectionId: ev.payload.connectionRecord.id, - }); - } catch (e) { - console.log("Error sending webhook"); - console.log(JSON.stringify(e, null, 2)); + const promises: Promise<AxiosResponse>[] = []; + + const tokenUrlPairs = addr.split(";"); + + for (const pair of tokenUrlPairs) { + const [token, url] = pair.split("@"); + + const promise = axios.post( + url, + { + thid: ev.payload.message.threadId, + connectionId: ev.payload.connectionRecord.id, + }, + { + headers: { + "X-Api-Key": token, + }, + }, + ); + + promises.push(promise); + } + + const promiseResults = await Promise.allSettled(promises); + for (let index = 0; index < promiseResults.length; index++) { + const promiseResult = promiseResults[index]; + const [_, url] = tokenUrlPairs[index].split("@"); + + if (promiseResult.status === "rejected") { + console.log( + `Failed to send web hook to ${url}. Reason ${promiseResult.reason}`, + ); + continue; + } + console.log(`Successfully sent web hook to ${url}`); } }; -- GitLab