File size: 1,295 Bytes
ab8b5a4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
"""
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)],
)
|