const express = require("express"); const { sendImmutableMedia } = require("./streaming"); function createMediaRouter(assetService) { const router = express.Router(); async function sendMedia(request, response, next, kind) { const version = request.params.version; if (!version.endsWith(".webp")) { response.status(404).json({ error: { code: "MEDIA_NOT_FOUND", message: "Asset media version not found", }, }); return; } try { const descriptor = assetService.mediaDescriptor( request.params.assetId, kind, version.slice(0, -".webp".length), ); await sendImmutableMedia(assetService, response, descriptor); } catch (error) { if (response.headersSent) { response.destroy(error); return; } next(error); } } router.get("/assets/:assetId/display/:version", (request, response, next) => sendMedia(request, response, next, "display"), ); router.get( "/assets/:assetId/thumbnail/:version", (request, response, next) => sendMedia(request, response, next, "thumbnail"), ); return router; } module.exports = { createMediaRouter, };