2
0
Files
cal/calcom/example-apps/credential-sync/pages/api/getToken.ts
2024-08-09 00:39:27 +02:00

42 lines
1.3 KiB
TypeScript

import type { NextApiRequest, NextApiResponse } from "next";
import { CALCOM_CREDENTIAL_SYNC_HEADER_NAME, CALCOM_CREDENTIAL_SYNC_SECRET } from "../../constants";
import { generateGoogleCalendarAccessToken, generateZoomAccessToken } from "../../lib/integrations";
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
const secret = req.headers[CALCOM_CREDENTIAL_SYNC_HEADER_NAME];
console.log("getToken hit");
try {
if (!secret) {
return res.status(403).json({ message: "secret header not set" });
}
if (secret !== CALCOM_CREDENTIAL_SYNC_SECRET) {
return res.status(403).json({ message: "Invalid secret" });
}
const calcomUserId = req.body.calcomUserId;
const appSlug = req.body.appSlug;
console.log("getToken Params", {
calcomUserId,
appSlug,
});
let accessToken;
if (appSlug === "google-calendar") {
accessToken = await generateGoogleCalendarAccessToken();
} else if (appSlug === "zoom") {
accessToken = await generateZoomAccessToken();
} else {
throw new Error("Unhandled values");
}
if (!accessToken) {
throw new Error("Unable to generate token");
}
res.status(200).json({
_1: true,
access_token: accessToken,
});
} catch (e) {
res.status(500).json({ error: e.message });
}
}