link-stack/apps/bridge-frontend/app/_lib/facebook.ts

190 lines
4.1 KiB
TypeScript
Raw Normal View History

2024-03-16 19:39:20 +01:00
import { NextRequest, NextResponse } from "next/server";
2024-04-26 14:31:33 +02:00
import { Service, ServiceConfig } from "./service";
export const facebookConfig: ServiceConfig = {
entity: "facebook",
table: "FacebookBot",
2024-04-26 15:49:58 +02:00
displayName: "Facebook Connection",
2024-04-26 14:31:33 +02:00
createFields: [
2024-04-26 15:49:58 +02:00
{
name: "name",
label: "Name",
required: true,
size: 12,
},
2024-04-26 14:31:33 +02:00
{
name: "description",
label: "Description",
2024-04-26 15:49:58 +02:00
size: 12,
lines: 3,
2024-04-26 14:31:33 +02:00
},
2024-04-26 15:49:58 +02:00
{ name: "appId", label: "App ID", required: true },
{ name: "appSecret", label: "App Secret", required: true },
{ name: "pageId", label: "Page ID", required: true },
2024-04-26 14:31:33 +02:00
{
name: "pageAccessToken",
label: "Page Access Token",
required: true,
},
],
updateFields: [
2024-04-26 15:49:58 +02:00
{ name: "name", label: "Name", required: true, size: 12 },
2024-04-26 14:31:33 +02:00
{
name: "description",
label: "Description",
2024-04-26 15:49:58 +02:00
size: 12,
lines: 3,
2024-04-26 14:31:33 +02:00
},
2024-04-26 15:49:58 +02:00
{ name: "appId", label: "App ID", required: true },
{ name: "appSecret", label: "App Secret", required: true },
{ name: "pageId", label: "Page ID", required: true },
2024-04-26 14:31:33 +02:00
{
name: "pageAccessToken",
label: "Page Access Token",
required: true,
},
],
displayFields: [
2024-04-26 15:49:58 +02:00
{ name: "name", label: "Name", required: true, size: 12 },
2024-04-26 14:31:33 +02:00
{
name: "description",
label: "Description",
required: true,
2024-04-26 15:49:58 +02:00
size: 12,
},
{ name: "appId", label: "App ID", required: true },
{ name: "appSecret", label: "App Secret", required: true },
{
name: "pageId",
label: "Page ID",
required: true,
copyable: true,
2024-04-26 14:31:33 +02:00
},
{
name: "pageAccessToken",
label: "Page Access Token",
required: true,
},
],
listColumns: [
{
field: "name",
headerName: "Name",
flex: 1,
},
{
field: "description",
headerName: "Description",
flex: 2,
},
{
field: "updatedAt",
headerName: "Updated At",
valueGetter: (value: any) => new Date(value).toLocaleString(),
flex: 1,
},
],
};
2024-03-16 19:39:20 +01:00
const getAllBots = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
const getOneBot = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
const sendMessage = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
const receiveMessages = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
const registerBot = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
const resetBot = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
const requestCode = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
const unverifyBot = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
const refreshBot = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
const createBot = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
const deleteBot = async (req: NextRequest) => {
console.log({ req });
return NextResponse.json({ response: "ok" });
};
2024-04-21 08:11:24 +02:00
const handleWebhook = async (req: NextRequest) => {
console.log({ req });
const { searchParams } = req.nextUrl;
const token = searchParams.get("hub.verify_token");
if (token !== process.env.FB_VERIFY_TOKEN) {
// return NextResponse.error("Invalid token", { status: 403 });
}
if (searchParams.get("hub.mode") === "subscribe") {
const challenge = searchParams.get("hub.challenge");
console.log(token);
console.log(challenge);
return new Response(challenge, { status: 200 }) as NextResponse;
}
return NextResponse.json({ response: "ok" });
};
2024-03-16 19:39:20 +01:00
export const Facebook: Service = {
getAllBots,
getOneBot,
sendMessage,
receiveMessages,
registerBot,
resetBot,
requestCode,
unverifyBot,
refreshBot,
createBot,
deleteBot,
2024-04-21 08:11:24 +02:00
handleWebhook,
2024-03-16 19:39:20 +01:00
};