diff --git a/pages/api/projects.ts b/pages/api/projects.ts new file mode 100644 index 0000000..3037fa6 --- /dev/null +++ b/pages/api/projects.ts @@ -0,0 +1,29 @@ +import { readFileSync } from "fs"; +import { resolve } from "path"; +import type { NextApiRequest, NextApiResponse } from "next"; + +interface IFileError { + message: string; + name: string; + stack?: string; + code: string; + errno: number; + syscall: string; + path: string; +} + +export default function handler(req: NextApiRequest, res: NextApiResponse) { + if (req.method !== "GET") return res.status(405).end(); + + try { + const path = resolve("./public", "projects", "list.json"); + const data = readFileSync(path).toString(); + console.debug("[API/get_project]\tRequest for project list"); + res.status(200).send(data); + } catch (err) { + console.error(`[API/get_project]\tError in request for project list! Code: ${(err as IFileError).code}`); + res.status(500); + } finally { + res.end(); + } +} diff --git a/pages/api/projects/[name].ts b/pages/api/projects/[name].ts new file mode 100644 index 0000000..027319f --- /dev/null +++ b/pages/api/projects/[name].ts @@ -0,0 +1,33 @@ +import { readFileSync } from "fs"; +import { resolve } from "path"; +import type { NextApiRequest, NextApiResponse } from "next"; + +interface IFileError { + message: string; + name: string; + stack?: string; + code: string; + errno: number; + syscall: string; + path: string; +} + +export default function handler(req: NextApiRequest, res: NextApiResponse) { + if (req.method !== "GET") return res.status(405).end(); + if (!req.query.name) return res.status(400).end(); + + const project = req.query.name; + + try { + const path = resolve("./public", "projects", `${project}.adoc`); + const data = readFileSync(path).toString(); + console.debug(`[API/get_project]\tRequest for ${project}`); + res.status(200).send(data); + } catch (err) { + console.error(`[API/get_project]\tError in request for ${project}! Code: ${(err as IFileError).code}`); + if ((err as IFileError).code === "ENOENT") res.status(404); + else res.status(500); + } finally { + res.end(); + } +}