INNER CODE UNIT · Python
create_app
center-for-threat-informed-defense/attack-flow · src/attack_flow_api/main.py:98
def create_app() -> FastAPI:
settings = load_settings()
app = FastAPI(title=settings.app_name, version=_resolve_package_version(), lifespan=lifespan)
if settings.cors_enabled:
app.add_middleware(
CORSMiddleware,
allow_origins=_split_csv(settings.cors_allow_origins),
allow_credentials=settings.cors_allow_credentials,
allow_methods=_split_csv(settings.cors_allow_methods) or ["*"],
allow_headers=_split_csv(settings.cors_allow_headers) or ["*"],
)
app.add_middleware(RequestContextMiddleware)
app.add_exception_handler(BadRequestError, bad_request_exception_handler)
app.add_exception_handler(NotFoundError, not_found_exception_handler)
app.add_exception_handler(ConflictError, conflict_exception_handler)
app.add_exception_handler(PayloadTooLargeError, payload_too_large_exception_handler)
app.add_exception_handler(Exception, unhandled_exception_handler)
app.include_router(create_api_router(), prefix=settings.api_prefix)