Files
firecrawl/apps/api/src/services/webhook.ts
T

55 lines
1.3 KiB
TypeScript
Raw Normal View History

2024-04-15 17:01:47 -04:00
import { supabase_service } from "./supabase";
export const callWebhook = async (teamId: string, data: any) => {
2024-04-20 19:37:45 -07:00
try {
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);
2024-04-15 17:01:47 -04:00
if (error) {
console.error(`Error fetching webhook URL for team ID: ${teamId}`, error.message);
return null;
}
if (!webhooksData || webhooksData.length === 0) {
return null;
}
webhookUrl = webhooksData[0].url;
}
2024-04-15 17:01:47 -04:00
let dataToSend = [];
if (data.result.links && data.result.links.length !== 0) {
for (let i = 0; i < data.result.links.length; i++) {
dataToSend.push({
content: data.result.links[i].content.content,
markdown: data.result.links[i].content.markdown,
metadata: data.result.links[i].content.metadata,
});
}
}
await fetch(webhookUrl, {
2024-04-15 17:01:47 -04:00
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
success: data.success,
project_id: data.project_id,
2024-04-15 17:01:47 -04:00
data: dataToSend,
error: data.error || undefined,
}),
2024-04-20 19:37:45 -07:00
});
} catch (error) {
console.error(`Error sending webhook for team ID: ${teamId}`, error.message);
}
};