feat(infra): add reminder scheduler jobs

This commit is contained in:
2026-03-08 22:23:19 +04:00
parent 1b08da4591
commit fd0680c8ef
18 changed files with 474 additions and 59 deletions

View File

@@ -5,7 +5,7 @@ export interface BotWebhookServerOptions {
scheduler?:
| {
pathPrefix?: string
sharedSecret: string
authorize: (request: Request) => Promise<boolean>
handler: (request: Request, reminderType: string) => Promise<Response>
}
| undefined
@@ -26,13 +26,6 @@ function isAuthorized(request: Request, expectedSecret: string): boolean {
return secretHeader === expectedSecret
}
function isSchedulerAuthorized(request: Request, expectedSecret: string): boolean {
const customHeader = request.headers.get('x-household-scheduler-secret')
const authorizationHeader = request.headers.get('authorization')
return customHeader === expectedSecret || authorizationHeader === `Bearer ${expectedSecret}`
}
export function createBotWebhookServer(options: BotWebhookServerOptions): {
fetch: (request: Request) => Promise<Response>
} {
@@ -57,7 +50,7 @@ export function createBotWebhookServer(options: BotWebhookServerOptions): {
return new Response('Method Not Allowed', { status: 405 })
}
if (!isSchedulerAuthorized(request, options.scheduler!.sharedSecret)) {
if (!(await options.scheduler!.authorize(request))) {
return new Response('Unauthorized', { status: 401 })
}