diff --git a/servers/fastapi/api/main.py b/servers/fastapi/api/main.py index 80eea709..ae866738 100644 --- a/servers/fastapi/api/main.py +++ b/servers/fastapi/api/main.py @@ -2,6 +2,7 @@ from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from api.lifespan import app_lifespan from api.middlewares import UserConfigEnvUpdateMiddleware +from api.v1.mock.router import API_V1_MOCK_ROUTER from api.v1.ppt.router import API_V1_PPT_ROUTER @@ -10,6 +11,7 @@ app = FastAPI(lifespan=app_lifespan) # Routers app.include_router(API_V1_PPT_ROUTER) +app.include_router(API_V1_MOCK_ROUTER) # Middlewares origins = ["*"] diff --git a/servers/fastapi/api/v1/mock/router.py b/servers/fastapi/api/v1/mock/router.py new file mode 100644 index 00000000..b37b6e04 --- /dev/null +++ b/servers/fastapi/api/v1/mock/router.py @@ -0,0 +1,34 @@ +import uuid +from fastapi import APIRouter +from models.api_error_model import APIErrorModel +from models.presentation_and_path import PresentationPathAndEditPath +from typing import List + +API_V1_MOCK_ROUTER = APIRouter(prefix="/api/v1/mock", tags=["Mock"]) + + +@API_V1_MOCK_ROUTER.get( + "/presentation-generation-completed", + response_model=List[PresentationPathAndEditPath], +) +async def mock_presentation_generation_completed(): + return [ + PresentationPathAndEditPath( + presentation_id=uuid.uuid4(), + path="/app_data/exports/test.pdf", + edit_path="/presentation?id=123", + ) + ] + + +@API_V1_MOCK_ROUTER.get( + "/presentation-generation-failed", + response_model=List[APIErrorModel], +) +async def mock_presentation_generation_completed(): + return [ + APIErrorModel( + status_code=500, + detail="Presentation generation failed", + ) + ] diff --git a/servers/fastapi/models/api_error_model.py b/servers/fastapi/models/api_error_model.py new file mode 100644 index 00000000..9def72e4 --- /dev/null +++ b/servers/fastapi/models/api_error_model.py @@ -0,0 +1,13 @@ +from fastapi import HTTPException +from pydantic import BaseModel + + +class APIErrorModel(BaseModel): + status_code: int + detail: str + + @classmethod + def from_exception(cls, e: Exception) -> "APIErrorModel": + if isinstance(e, HTTPException): + return APIErrorModel(status_code=e.status_code, detail=e.detail) + return APIErrorModel(status_code=500, detail=str(e))