"""PDF generation API endpoint.""" from io import BytesIO from fastapi import APIRouter, HTTPException from fastapi.responses import StreamingResponse from app.models.event import ScenarioDocument from app.core.validator import ScenarsError from app.core.pdf_generator import generate_pdf router = APIRouter() @router.post("/generate-pdf") async def generate_pdf_endpoint(doc: ScenarioDocument): """Generate PDF timetable from ScenarioDocument.""" try: pdf_bytes = generate_pdf(doc) except ScenarsError as e: raise HTTPException(status_code=422, detail=str(e)) return StreamingResponse( BytesIO(pdf_bytes), media_type="application/pdf", headers={"Content-Disposition": "attachment; filename=scenar_timetable.pdf"} )