2024-04-30 11:39:16 +02:00
|
|
|
import { NextRequest, NextResponse } from "next/server";
|
|
|
|
|
import { Service } from "./service";
|
|
|
|
|
import { db, getWorkerUtils } from "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");
|
2024-05-16 13:00:18 +02:00
|
|
|
const response = new Response(challenge, { status: 200 });
|
2024-04-30 11:39:16 +02:00
|
|
|
|
2024-05-16 13:00:18 +02:00
|
|
|
return response as any;
|
2024-04-30 11:39:16 +02:00
|
|
|
} else {
|
|
|
|
|
return NextResponse.error();
|
|
|
|
|
}
|
2024-05-16 13:00:18 +02:00
|
|
|
} 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
|
|
|
|
2024-05-16 13:00:18 +02:00
|
|
|
return NextResponse.json({ response: "ok" });
|
|
|
|
|
}
|
2024-04-30 11:39:16 +02:00
|
|
|
}
|
|
|
|
|
}
|