naystack
Version:
A stack built with tight Next + Drizzle + GraphQL
28 lines (26 loc) • 773 B
JavaScript
// src/socials/meta-webhook.ts
import { NextResponse } from "next/server";
var verifyWebhook = (secret) => (req) => {
const params = req.nextUrl.searchParams;
if (params.get("hub.verify_token") === secret) {
return new NextResponse(params.get("hub.challenge"));
}
};
// src/socials/threads/webhook.ts
var setupThreadsWebhook = (options) => {
return {
GET: verifyWebhook(options.secret),
POST: async (req) => {
const payload = await req.json();
let allGood = true;
for (const { value, field } of payload.values) {
allGood = allGood && await options.callback(field, value);
}
if (!allGood) return new Response("BAD", { status: 500 });
return new Response("OK");
}
};
};
export {
setupThreadsWebhook
};