"""Demo routers — bulk-session, media, and track endpoints.""" from fastapi import APIRouter from fastapi.responses import JSONResponse import config from datasources import get_authorization_backend from python_pdp_sdk import ForwardKwargsGetter router = APIRouter() DEFAULT_TENANT = {"tenant_uuid": config.TENANT_UUID, "tenant_type": config.TENANT_TYPE} def _auth_check(action: str, resource_id: int | str, resource_type: str) -> bool: return get_authorization_backend().is_authorized( action=action, resource_id=resource_id, resource_type=resource_type, resource_getter=ForwardKwargsGetter(), tenant=DEFAULT_TENANT, ) @router.get("/bulk-session/") async def list_bulk_sessions(): authorized = _auth_check("list", "all", "bulk_session") return JSONResponse({"authorized": authorized}) @router.post("/bulk-session/") async def create_bulk_session(): authorized = _auth_check("create", "all", "bulk_session") return JSONResponse({"authorized": authorized}, status_code=201) @router.get("/bulk-session/{session_id}") async def get_bulk_session(session_id: int): authorized = _auth_check("read", session_id, "bulk_session") return JSONResponse({"session_id": session_id, "authorized": authorized}) @router.patch("/bulk-session/{session_id}") async def update_bulk_session(session_id: int): authorized = _auth_check("update", session_id, "bulk_session") return JSONResponse({"session_id": session_id, "authorized": authorized}) @router.delete("/bulk-session/{session_id}") async def delete_bulk_session(session_id: int): authorized = _auth_check("delete", session_id, "bulk_session") return JSONResponse({"session_id": session_id, "authorized": authorized}) @router.get("/media/{media_id}") async def get_media(media_id: int): authorized = _auth_check("read", media_id, "media") return JSONResponse({"media_id": media_id, "authorized": authorized}) @router.get("/track/{track_id}") async def get_track(track_id: int): authorized = _auth_check("read", track_id, "track") return JSONResponse({"track_id": track_id, "authorized": authorized}) @router.delete("/track/{track_id}") async def delete_track(track_id: int): authorized = _auth_check("delete", track_id, "track") return JSONResponse({"track_id": track_id, "authorized": authorized})