From 6208f4207d2395bfb507568abae022807498250c Mon Sep 17 00:00:00 2001 From: Jakob Stadlhuber Date: Tue, 4 Jun 2024 19:55:07 +0200 Subject: [PATCH] Add support for Self-Hosted Webhook URL Usage and added project_id into the webhook payload This commit introduces the capability of using a Self-Hosted Webhook URL. The application now checks for a self-hosted URL before querying the database for the webhook settings. If a Self-Hosted Webhook URL is set in the environment variables, it will be used directly, diminishing unnecessary database queries. --- apps/api/.env.example | 5 ++++- apps/api/src/services/webhook.ts | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/apps/api/.env.example b/apps/api/.env.example index f18f274..ea0daa3 100644 --- a/apps/api/.env.example +++ b/apps/api/.env.example @@ -49,4 +49,7 @@ PROXY_SERVER= PROXY_USERNAME= PROXY_PASSWORD= # set if you'd like to block media requests to save proxy bandwidth -BLOCK_MEDIA= \ No newline at end of file +BLOCK_MEDIA= + +# Set this to the URL of your webhook when using the self-hosted version of FireCrawl +SELF_HOSTED_WEBHOOK_URL=https://webhook.site/9d867d67-f77a-409b-aad6-73ebb2a264c2 \ No newline at end of file diff --git a/apps/api/src/services/webhook.ts b/apps/api/src/services/webhook.ts index ab1f90e..e0ad4df 100644 --- a/apps/api/src/services/webhook.ts +++ b/apps/api/src/services/webhook.ts @@ -2,11 +2,15 @@ import { supabase_service } from "./supabase"; export const callWebhook = async (teamId: string, data: any) => { try { - const { data: webhooksData, error } = await supabase_service - .from('webhooks') - .select('url') - .eq('team_id', teamId) - .limit(1); + const selfHostedUrl = process.env.SELF_HOSTED_WEBHOOK_URL; + let webhookUrl = selfHostedUrl; + + if (!selfHostedUrl) { + const { data: webhooksData, error } = await supabase_service + .from('webhooks') + .select('url') + .eq('team_id', teamId) + .limit(1); if (error) { console.error(`Error fetching webhook URL for team ID: ${teamId}`, error.message); @@ -17,6 +21,9 @@ export const callWebhook = async (teamId: string, data: any) => { return null; } + webhookUrl = webhooksData[0].url; +} + let dataToSend = []; if (data.result.links && data.result.links.length !== 0) { for (let i = 0; i < data.result.links.length; i++) { @@ -28,13 +35,14 @@ export const callWebhook = async (teamId: string, data: any) => { } } - await fetch(webhooksData[0].url, { + await fetch(webhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ success: data.success, + project_id: data.project_id, data: dataToSend, error: data.error || undefined, }),