20 lines
810 B
TypeScript
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}`)); |