Added On-demand revalidation
This commit is contained in:
parent
9d90828a76
commit
70a3e1895b
|
@ -0,0 +1,50 @@
|
|||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
|
||||
export type RequestMailProps = {
|
||||
event: "entry.update" | "entry.delete" | "entry.create";
|
||||
model: string;
|
||||
entry: {
|
||||
slug: string;
|
||||
};
|
||||
};
|
||||
|
||||
export type ResponseMailProps = {
|
||||
message: string;
|
||||
revalidated: boolean;
|
||||
};
|
||||
|
||||
export default async function Mail(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse<ResponseMailProps>
|
||||
) {
|
||||
console.log(req.body);
|
||||
const body = req.body as RequestMailProps;
|
||||
|
||||
// Check for secret to confirm this is a valid request
|
||||
if (
|
||||
req.headers.authorization !== `Bearer ${process.env.REVALIDATION_TOKEN}`
|
||||
) {
|
||||
return res
|
||||
.status(401)
|
||||
.json({ message: "Invalid token", revalidated: false });
|
||||
}
|
||||
|
||||
const uRLsToRevalidate: string[] = [];
|
||||
|
||||
if (body.model === "post") {
|
||||
uRLsToRevalidate.push(`/news/${body.entry.slug}`);
|
||||
}
|
||||
|
||||
console.table(uRLsToRevalidate);
|
||||
|
||||
try {
|
||||
uRLsToRevalidate.map(async (url) => await res.unstable_revalidate(url));
|
||||
return res.json({ message: "Success!", revalidated: true });
|
||||
} catch (err) {
|
||||
// If there was an error, Next.js will continue
|
||||
// to show the last successfully generated page
|
||||
return res
|
||||
.status(500)
|
||||
.send({ message: "Error revalidating", revalidated: false });
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue