33 lines
961 B
TypeScript
33 lines
961 B
TypeScript
|
|
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");
|
||
|
|
|
||
|
|
return NextResponse.json(challenge) as any;
|
||
|
|
} else {
|
||
|
|
return NextResponse.error();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
const message = await req.json();
|
||
|
|
const worker = await getWorkerUtils();
|
||
|
|
await worker.addJob("receive_facebook_message", message);
|
||
|
|
|
||
|
|
return NextResponse.json({ response: "ok" });
|
||
|
|
}
|
||
|
|
}
|