/// import nunjucks from "nunjucks"; import { DateTime } from "ts-luxon"; import { authRoutes } from "./auth/routes"; import { routes as basicRoutes } from "./basic/routes"; import { contentTypes } from "./content-types"; import { multiHandler } from "./handlers"; import { httpCodes } from "./http-codes"; import { services } from "./services"; import type { Call, Result, 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, basicRoutes.hello, { 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 rrr = lr(routes); const template = ` `; const result = nunjucks.renderString(template, { rrr }); const _listing = lr(routes).join(", "); return { code, result, contentType: contentTypes.text.html, }; }, }, { path: "/whoami", methods: ["GET"], handler: async (call: Call): Promise => { const me = call.session.getUser(); const template = ` {{ me }} `; const result = nunjucks.renderString(template, { me }); return { code: httpCodes.success.OK, contentType: contentTypes.text.html, result, }; }, }, { 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 };