link-stack/packages/bridge-ui/lib/facebook.ts

34 lines
1 KiB
TypeScript
Raw Normal View History

2024-04-30 11:39:16 +02:00
import { NextRequest, NextResponse } from "next/server";
import { Service } from "./service";
2024-06-05 08:52:41 +02:00
import { db, getWorkerUtils } from "@link-stack/bridge-common";
2024-04-30 11:39:16 +02:00
export class Facebook extends Service {
async handleWebhook(req: NextRequest) {
const { searchParams } = req.nextUrl;
const submittedToken = searchParams.get("hub.verify_token");
if (submittedToken) {
await db
.selectFrom("FacebookBot")
.selectAll()
.where("verifyToken", "=", submittedToken)
.executeTakeFirstOrThrow();
if (searchParams.get("hub.mode") === "subscribe") {
const challenge = searchParams.get("hub.challenge");
const response = new Response(challenge, { status: 200 });
2024-04-30 11:39:16 +02:00
return response as any;
2024-04-30 11:39:16 +02:00
} else {
return NextResponse.error();
}
} else {
const message = await req.json();
const worker = await getWorkerUtils();
await worker.addJob("facebook/receive-facebook-message", { message });
2024-04-30 11:39:16 +02:00
return NextResponse.json({ response: "ok" });
}
2024-04-30 11:39:16 +02:00
}
}