import { NextApiRequest, NextApiResponse } from 'next' import { SiteMap } from '../lib/types' import { host } from '../lib/config' import { getSiteMaps } from '../lib/get-site-maps' export default async ( req: NextApiRequest, res: NextApiResponse ): Promise => { if (req.method !== 'GET') { return res.status(405).send({ error: 'method not allowed' }) } const siteMaps = await getSiteMaps() // cache sitemap for up to one hour res.setHeader( 'Cache-Control', 'public, s-maxage=3600, max-age=3600, stale-while-revalidate=3600' ) res.setHeader('Content-Type', 'text/xml') res.write(createSitemap(siteMaps[0])) res.end() } const createSitemap = ( siteMap: SiteMap ) => ` ${host} ${host}/ ${Object.keys(siteMap.canonicalPageMap) .map((canonicalPagePath) => ` ${host}/${canonicalPagePath} `.trim() ) .join('')} `