from fastapi import APIRouter, HTTPException, Query from fastapi.responses import FileResponse from ..media_catalog import published_assets, published_file router = APIRouter() @router.get("/api/v1/media/catalog") def media_catalog(entity_type: str | None = Query(None, pattern="^(fish|waterbody|tackle|reference)$")) -> list[dict]: return published_assets(entity_type) @router.get("/api/v1/media/assets/{digest}", response_class=FileResponse) def media_asset(digest: str) -> FileResponse: item = published_file(digest) if not item: raise HTTPException(status_code=404, detail="Media asset not found") path, media_type = item return FileResponse(path, media_type=media_type, headers={ "Cache-Control": "public, max-age=31536000, immutable", "ETag": f'"{digest}"', })