link-stack/packages/bridge-ui/lib/facebook.ts
2024-06-05 08:52:41 +02:00

33 lines
1 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
import { Service } from "./service";
import { db, getWorkerUtils } from "@link-stack/bridge-common";
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 });
return response as any;
} else {
return NextResponse.error();
}
} else {
const message = await req.json();
const worker = await getWorkerUtils();
await worker.addJob("facebook/receive-facebook-message", { message });
return NextResponse.json({ response: "ok" });
}
}
}