from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from starlette.exceptions import HTTPException as StarletteHTTPException from idreamers.core.config import settings from idreamers.core.wrappers import PilotResponseWrapper, ErrorPilotResponse def create_app() -> FastAPI: app = FastAPI() from idreamers.api.calculation import calculation_router app.include_router(calculation_router, tags=['calculation']) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"], ) @app.exception_handler(StarletteHTTPException) async def http_exception_handler(_, exc): return PilotResponseWrapper( data=None, successful=False, error=ErrorPilotResponse(message=str(exc.detail)) ).response(exc.status_code) @app.get("/") async def read_root(): return {"calculation": "Hello world!"} return app