""" Main API module. """ import logging from contextlib import asynccontextmanager from fastapi import FastAPI, Depends from fastapi.middleware.cors import CORSMiddleware from api.inference import router as inference_router from api.requirements import router as requirements_router from api import auth from api.schema import SuccessDetail @asynccontextmanager async def lifespan(app: FastAPI): logger = logging.getLogger("uvicorn") logger.info(f"Starting up...") yield logger.info(f"Shutting down...") app = FastAPI( title="Team 13 API", lifespan=lifespan, ) origins = ["*"] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.get( "/", tags=["HOME"], summary="Home page", status_code=200, response_model=SuccessDetail, ) async def home(): """ Home page. """ return {"success": "Welcome to yet another API!"} app.include_router( requirements_router.router, prefix="/requirements", tags=["REQUIREMENTS"], dependencies=[Depends(auth.validate_api_key)], ) app.include_router( inference_router.router, prefix="/inference", tags=["INFERENCE"], dependencies=[Depends(auth.validate_api_key)], )