|
| 1 | +import { NextApiRequest, NextApiResponse } from "next" |
| 2 | +import { config } from "../../utils/config" |
| 3 | +import { getArtifacts, getCharacters, getEnemies, getGuides, getMaterials, getWeapons, } from "../../utils/data-cache" |
| 4 | +import { urlify } from "../../utils/utils" |
| 5 | + |
| 6 | +export default async function api(req: NextApiRequest, res: NextApiResponse) { |
| 7 | + if (req.method !== "GET") return res.redirect("/") |
| 8 | + |
| 9 | + const urls: string[] = [`${config.appUri}`] |
| 10 | + |
| 11 | + urls.push(`${config.appUri}/artifacts`) |
| 12 | + for (const arti of Object.values((await getArtifacts()) ?? {})) |
| 13 | + urls.push(`${config.appUri}/artifacts/${urlify(arti.name, false)}`) |
| 14 | + |
| 15 | + urls.push(`${config.appUri}/characters`) |
| 16 | + for (const char of Object.values((await getCharacters()) ?? {})) |
| 17 | + urls.push(`${config.appUri}/characters/${urlify(char.name, false)}`) |
| 18 | + |
| 19 | + urls.push(`${config.appUri}/guides`) |
| 20 | + for (const category of (await getGuides()) ?? []) { |
| 21 | + urls.push(`${config.appUri}/guides/${urlify(category.name, false)}`) |
| 22 | + for (const page of category.pages) |
| 23 | + urls.push(`${config.appUri}/guides/${urlify(category.name, false)}/${urlify(page.name, true)}`) |
| 24 | + } |
| 25 | + |
| 26 | + urls.push(`${config.appUri}/enemies`) |
| 27 | + for (const enemy of Object.values((await getEnemies()) ?? {})) |
| 28 | + urls.push(`${config.appUri}/enemies/${urlify(enemy.name, false)}`) |
| 29 | + |
| 30 | + urls.push(`${config.appUri}/materials`) |
| 31 | + for (const material of Object.values((await getMaterials()) ?? {})) |
| 32 | + urls.push(`${config.appUri}/materials/${urlify(material.name, false)}`) |
| 33 | + |
| 34 | + urls.push(`${config.appUri}/materials`) |
| 35 | + for (const material of Object.values((await getMaterials()) ?? {})) |
| 36 | + urls.push(`${config.appUri}/materials/${urlify(material.name, false)}`) |
| 37 | + |
| 38 | + urls.push(`${config.appUri}/weapons`) |
| 39 | + for (const weapon of Object.values((await getWeapons()) ?? {})) |
| 40 | + urls.push(`${config.appUri}/weapons/${urlify(weapon.name, false)}`) |
| 41 | + |
| 42 | + res.setHeader("Cache-Control", "public, max-age: 57600, s-max-age: 604800") |
| 43 | + res.setHeader("Content-Type", "text/plain; charset=UTF-8") |
| 44 | + res.send(urls.join("\n")) |
| 45 | +} |
0 commit comments