const fs = require('fs') const fetch = require('node-fetch') import { apiEndpoints } from '../utils/store' // Variables let baseURL const pages = [''] // Get routes and push it to array fs.readdirSync('./src/routes').forEach(file => { const filename = file.split('.')[0] if (!file.startsWith('.') && !filename.startsWith('_') && ['sitemap', 'index', 'location', 'viewer'].indexOf(filename) === -1) { pages.push(filename) } }) // Render function const render = (pages, locations) => { return ` ${pages.map(page => ` ${baseURL}/${page} 0.75 `).join('\n')} ${locations.map(loc => ` ${baseURL}/location/${loc.country.slug}/${loc.slug} 1 `).join('\n')} ` } // Get function export async function get (req, res, next) { // Define base url from request baseURL = `http${(req.httpVersion >= 2) ? 's' : ''}://${req.headers.host}` // Get locations const locationsReq = await fetch(`${apiEndpoints.rest}/items/locations?fields=slug,country.slug`) const locations = await locationsReq.json() // Set headers res.setHeader('Cache-Control', 'max-age=0, s-max-age=600') // 10 minutes res.setHeader('Content-Type', 'application/rss+xml') // Render sitemap const sitemap = render(pages, locations.data) res.end(sitemap) }