pollo/src/pages/api/webhooks/index.ts

52 lines
1.1 KiB
TypeScript
Raw Normal View History

2023-08-14 21:16:11 -06:00
import type { NextApiRequest, NextApiResponse } from "next";
import { validateRequest } from "~/server/unkey";
import {
onUserCreatedHandler,
onUserDeletedHandler,
} from "~/server/webhookHelpers";
2023-08-14 21:19:47 -06:00
import { type WebhookEvent, WebhookEvents } from "~/utils/types";
2023-08-14 21:16:11 -06:00
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
const isValid = await validateRequest(req, res);
if (!isValid) {
return;
}
const requestBody = req.body as {
data: {
id: string;
email_addresses:
| [
{
email_address: string;
id: string;
verification: {
status: string;
strategy: string;
};
}
]
| null;
};
type: WebhookEvent;
};
switch (requestBody.type) {
case WebhookEvents.USER_CREATED:
2023-08-14 21:19:47 -06:00
await onUserCreatedHandler(requestBody.data.id, res);
return;
2023-08-14 21:16:11 -06:00
case WebhookEvents.USER_DELETED:
2023-08-14 21:19:47 -06:00
await onUserDeletedHandler(requestBody.data.id, res);
return;
2023-08-14 21:16:11 -06:00
default:
res.status(400).json({ error: "INVALID WEBHOOK EVENT" });
2023-08-14 21:19:47 -06:00
return;
2023-08-14 21:16:11 -06:00
}
}