import { NextApiRequest, NextApiResponse } from 'next'; import { isValidSignature, SIGNATURE_HEADER_NAME } from '@sanity/webhook'; const SANITY_WEBHOOK_SECRET = `${process.env.SANITY_WEBHOOK_SECRET}`; export default async function handler(req: NextApiRequest, res: NextApiResponse) { const signature = `${req.headers[SIGNATURE_HEADER_NAME]}`; const isValid = isValidSignature(JSON.stringify(req.body), signature, SANITY_WEBHOOK_SECRET); console.log(`===== Is the webhook request valid? ${isValid}`); // Validate signature if (!isValid) { res.status(401).json({ success: false, message: 'Invalid signature' }); return; } const slug = req.body.slug; const locale = req.body.locale; const type = req.body._type; let pathToRevalidate = ""; switch(type) { case "home": pathToRevalidate = `${slug}${locale}`; break; default: break; } console.log(`Path to revalidate: ${pathToRevalidate}`) try { await res.revalidate(`${pathToRevalidate}`); return res.json({ revalidated: true }); } catch (err) { // Could not revalidate. The stale page will continue to be shown until // this issue is fixed. return res.status(500).send('Error while revalidating'); } }