/// import nunjucks from "nunjucks"; import { DateTime } from "ts-luxon"; import { authRoutes } from "./auth"; import { contentTypes } from "./content-types"; import { multiHandler } from "./handlers"; import { HttpCode, httpCodes } from "./http-codes"; import { services } from "./services"; import { type Call, ProcessedRoute, type Result, type Route } from "./types"; // FIXME: Obviously put this somewhere else const okText = (result: string): Result => { const code = httpCodes.success.OK; const retval: Result = { code, result, contentType: contentTypes.text.plain, }; return retval; }; const routes: Route[] = [ ...authRoutes, { path: "/slow", methods: ["GET"], handler: async (_call: Call): Promise => { console.log("starting slow request"); await services.misc.sleep(2); console.log("finishing slow request"); const retval = okText("that was slow"); return retval; }, }, { path: "/list", methods: ["GET"], handler: async (call: Call): Promise => { const code = httpCodes.success.OK; const lr = (rr: Route[]) => { const ret = rr.map((r: Route) => { return r.path; }); return ret; }; const listing = lr(routes).join(", "); return { code, result: listing + "\n", contentType: contentTypes.text.plain, }; }, }, { path: "/ok", methods: ["GET", "POST", "PUT"], handler: multiHandler, }, { path: "/alsook", methods: ["GET"], handler: async (_req): Promise => { const code = httpCodes.success.OK; return { code, result: "it is also ok", contentType: contentTypes.text.plain, }; }, }, { path: "/time", methods: ["GET"], handler: async (_req): Promise => { const now = DateTime.now(); const template = ` {{ now }} `; const result = nunjucks.renderString(template, { now }); return { code: httpCodes.success.OK, contentType: contentTypes.text.html, result, }; }, }, ]; export { routes };