Files
DoC/backend/api/main.py
T

64 lines
2.4 KiB
Python

from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from starlette.middleware.trustedhost import TrustedHostMiddleware
from api.config.settings import get_settings
from api.database.mongodb import db
from api.middleware.security_headers import SecurityHeadersMiddleware
# Routers
from api.routers.test_mongo import router as test_mongo_router
from api.routers.value_function import router as value_router
from api.routers.docmf_build import router as docmf_build_router
from api.routers.docmf_evaluate import router as docmf_eval_router
from api.routers.docmf_simple_validation import router as simple_validation_router
from api.routers.docmf_validation import router as validation_router
from api.routers.auth import router as auth_router
from api.routers.history import router as history_router
from api.routers.test_mongo import router as test_mongo_router
from api.routers.docit2mf_build import router as docit2mf_router
from api.routers.google_auth import router as google_auth_router
@asynccontextmanager
async def lifespan(app: FastAPI):
yield
settings = get_settings()
app = FastAPI(lifespan=lifespan)
app.add_middleware(SecurityHeadersMiddleware, settings=settings)
if settings.is_production:
app.add_middleware(
TrustedHostMiddleware,
allowed_hosts=settings.trusted_hosts,
)
cors_origins = settings.cors_allowed_origins
cors_kwargs = {
"allow_methods": ["*"],
"allow_headers": ["*"],
}
if cors_origins == ["*"]:
cors_kwargs["allow_origins"] = ["*"]
cors_kwargs["allow_credentials"] = False
else:
cors_kwargs["allow_origins"] = cors_origins
cors_kwargs["allow_credentials"] = True
app.add_middleware(CORSMiddleware, **cors_kwargs)
app.include_router(test_mongo_router, prefix="/api")
app.include_router(value_router, prefix="/api/criteria/doc")
app.include_router(docmf_build_router, prefix="/api/criteria/doc-mf")
app.include_router(docmf_eval_router, prefix="/api/criteria/doc-mf")
app.include_router(simple_validation_router, prefix="/api/criteria/doc-mf")
app.include_router(validation_router, prefix="/api/criteria/doc-mf")
app.include_router(test_mongo_router, prefix="/api")
app.include_router(auth_router, prefix="/api")
app.include_router(history_router, prefix="/api")
app.include_router(docit2mf_router, prefix="/api")
app.include_router(google_auth_router, prefix="/api")