Files
mapix/src/server/request-handler.ts
T

43 lines
1.1 KiB
TypeScript

import {
handleClientAssetRequest,
isClientAssetPath
} from "./client-assets.js";
import { htmlPage } from "./page-template.js";
import {
handleNextcloudBlobRequest,
handleNextcloudListRequest
} from "./nextcloud-proxy.js";
import type { IncomingMessage, ServerResponse } from "node:http";
export function createRequestHandler() {
return async function handleRequest(req: IncomingMessage, res: ServerResponse) {
const url = new URL(req.url ?? "/", "http://localhost");
if (url.pathname === "/health") {
res.statusCode = 200;
res.setHeader("content-type", "application/json; charset=utf-8");
res.end(JSON.stringify({ status: "ok" }));
return;
}
if (isClientAssetPath(url.pathname)) {
await handleClientAssetRequest(url, res);
return;
}
if (url.pathname === "/api/nextcloud/list") {
await handleNextcloudListRequest(url, res);
return;
}
if (url.pathname === "/api/nextcloud/blob") {
await handleNextcloudBlobRequest(url, res);
return;
}
res.statusCode = 200;
res.setHeader("content-type", "text/html; charset=utf-8");
res.end(htmlPage());
};
}