next-acms
Version:
Tools for building decoupled front-ends for Acquia CMS
35 lines (28 loc) • 787 B
text/typescript
import { NextApiRequest, NextApiResponse } from 'next';
export async function revalidate(
request: NextApiRequest,
response: NextApiResponse,
) {
let slug = request.query.slug as string;
const secret = request.query.secret as string;
// Validate secret.
if (secret !== process.env.DRUPAL_PREVIEW_SECRET) {
return response.status(401).json({ message: 'Invalid secret.' });
}
// Validate slug.
if (!slug) {
return response.status(400).json({ message: 'Invalid slug.' });
}
// Fix for home slug.
if (slug === process.env.NEXT_PUBLIC_DRUPAL_FRONT_PAGE) {
slug = '/';
}
try {
await response.revalidate(slug);
return response.json({});
} catch (error) {
return response.status(404).json({
message: error.message,
});
}
}