Implement Phase 2 asset storage pipeline

This commit is contained in:
Media
2026-08-16 19:59:10 -05:00
parent eb19675a5c
commit 722c6cf77d
29 changed files with 5059 additions and 16 deletions
+49
View File
@@ -0,0 +1,49 @@
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,
};