* mkdir * update imports * chore: update platform libraries --------- Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com> Co-authored-by: supalarry <laurisskraucis@gmail.com>
44 lines
1.7 KiB
TypeScript
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." } });
|
|
}),
|
|
}),
|
|
});
|