Backend/server/contentDelivery.ts

20 lines
810 B
TypeScript

import express, {Express, Request, Response} from 'express';
import {getMediaObject, pipeMedia} from "../controller/media";
const app: Express = express();
/** Logs something with a cdn prefix */
const log = (msg: string) => console.log(`[ContentDelivery] ${msg}`);
app.get("*.*", async (req: Request, res: Response) => {
const asset = (req.originalUrl.substring(1) || "default.txt").split(".");
const found = await getMediaObject(asset[0]);
if (!found) return res.status(404).send("<h2>Asset not found</h2>");
if (found.assetEnding !== asset[1]) return res.status(404).send("<h2>Asset not found</h2>");
await pipeMedia(found.assetId, res);
});
/** Starts the cdn service */
export const startServer = (port: number = 8673) => app.listen(port, () => log(`Listening on port ${port}`));