Files
calendar/apps/web/pages/api/router/index.ts
T
4a0a429774 refactor: Migrate getRoutedUrl from @calcom/lib to @calcom/features (#23666)
* mkdir

* update imports

* chore: update platform libraries

---------

Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
2025-09-08 11:28:22 +00:00

44 lines
1.7 KiB
TypeScript

import { getRoutedUrl } from "@calcom/features/routing-forms/lib/getRoutedUrl";
import { defaultHandler } from "@calcom/lib/server/defaultHandler";
import { defaultResponder } from "@calcom/lib/server/defaultResponder";
export default defaultHandler({
OPTIONS: Promise.resolve({
default: defaultResponder(async (req, res) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
res.setHeader("Access-Control-Allow-Headers", "Content-Type, cache-control, pragma");
res.status(204).end();
}),
}),
POST: Promise.resolve({
default: defaultResponder(async (req, res) => {
// getRoutedUrl has more detailed schema validation, we do a basic one here.
const params = req.body;
res.setHeader("Access-Control-Allow-Origin", "*");
const routedUrlData = await getRoutedUrl({ req, query: { ...params } });
if (routedUrlData?.notFound) {
return res.status(404).json({ status: "error", data: { message: "Form not found" } });
}
if (routedUrlData?.redirect?.destination) {
return res
.status(200)
.json({ status: "success", data: { redirect: routedUrlData.redirect.destination } });
}
if (routedUrlData?.props?.errorMessage) {
return res.status(400).json({ status: "error", data: { message: routedUrlData.props.errorMessage } });
}
if (routedUrlData?.props?.message) {
return res.status(200).json({ status: "success", data: { message: routedUrlData.props.message } });
}
return res
.status(500)
.json({ status: "error", data: { message: "Neither Route nor custom message found." } });
}),
}),
});