feat: trigger webhook functionality

This commit is contained in:
Catalin Pit
2024-02-16 11:04:11 +02:00
parent 61958989b4
commit 019db27b1d
5 changed files with 117 additions and 8 deletions

View File

@ -0,0 +1,30 @@
import type { Document, WebhookTriggerEvents } from '@documenso/prisma/client';
import { getAllWebhooks } from '../server-only/webhooks/get-all-webhooks';
import { postWebhookPayload } from './post-webhook-payload';
export type TriggerWebhookOptions = {
eventTrigger: WebhookTriggerEvents;
documentData: Document;
};
export const triggerWebhook = async ({ eventTrigger, documentData }: TriggerWebhookOptions) => {
try {
const allWebhooks = await getAllWebhooks({ eventTrigger });
const webhookPromises = allWebhooks.map((webhook) => {
const { webhookUrl, secret } = webhook;
postWebhookPayload({
webhookData: { webhookUrl, secret, eventTriggers: [eventTrigger] },
documentData,
}).catch((_err) => {
throw new Error(`Failed to send webhook to ${webhookUrl}`);
});
});
return Promise.all(webhookPromises);
} catch (err) {
throw new Error(`Failed to trigger webhook`);
}
};