Martin Dimitrov a12c7bfb44
All checks were successful
Build and push image for doorman-homeassistant / docker (push) Successful in 53s
Build and push Doorman UI / API / docker (push) Successful in 1m35s
Build and push image for doorman-homeassistant / deploy-gitainer (push) Successful in 4s
add common handler decorator and metrics for buzzer client
2024-12-15 13:00:48 -08:00

26 lines
1.5 KiB
TypeScript

import { register, Registry, Summary } from "prom-client";
import { InfoResponseClient } from "../../../doorman-api/src/functions/api/door/info";
import { TwilioContext } from "../types/TwilioContext";
import { lambdaFastHttp } from "./LambdaUtils";
import { BuzzerActivatedMetrics } from "../metrics/BuzzerActivatedMetrics";
export async function getConfig(context: TwilioContext, buzzer: string): Promise<InfoResponseClient | undefined> {
return await fetch(context.DOORMAN_URL + `/api/door/info?buzzer=${buzzer}`)
.then(res => res.json())
.catch(err => {
return undefined;
});
}
export async function notifyDiscord(context: TwilioContext, msg: string[], u: string[], optionalJsonStr: string[], metricsRegistry: Registry){
const endTimer = (metricsRegistry.getSingleMetric(BuzzerActivatedMetrics.NOTIFY_LATENCY) as Summary).startTimer();
const res = await lambdaFastHttp(context.DOORMAN_URL +
`/api/door/notify?discordUser=${encodeURIComponent(JSON.stringify(u))}&msg=${encodeURIComponent(JSON.stringify(msg))}&json=${encodeURIComponent(JSON.stringify(optionalJsonStr))}`,
).catch(err => console.log(err));
endTimer();
return res;
}
export async function notifyAllDiscord(context: TwilioContext, config: InfoResponseClient, msg: string, metricsRegistry: Registry, optionalJsonStr: string = "") {
return notifyDiscord(context, config.discordUsers.map(() => msg), config.discordUsers, config.discordUsers.map(() => optionalJsonStr), metricsRegistry);
}