Files
rf4-spotter/apps/api/app/routers/media.py
T
ik b47a6cc366
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
feat: publish approved RF4 media catalog
2026-09-14 22:20:46 +07:00

25 lines
822 B
Python

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}"',
})