Spaces:
Sleeping
Sleeping
from importlib import metadata | |
from fastapi import FastAPI | |
from fastapi.middleware.cors import CORSMiddleware | |
from fastapi.responses import UJSONResponse | |
from reworkd_platform.logging import configure_logging | |
from reworkd_platform.settings import settings | |
from reworkd_platform.web.api.error_handling import platformatic_exception_handler | |
from reworkd_platform.web.api.errors import PlatformaticError | |
from reworkd_platform.web.api.router import api_router | |
from reworkd_platform.web.lifetime import ( | |
register_shutdown_event, | |
register_startup_event, | |
) | |
def get_app() -> FastAPI: | |
""" | |
Get FastAPI application. | |
This is the main constructor of an application. | |
:return: application. | |
""" | |
configure_logging() | |
app = FastAPI( | |
title="Reworkd Platform API", | |
version=metadata.version("reworkd_platform"), | |
docs_url="/api/docs", | |
redoc_url="/api/redoc", | |
openapi_url="/api/openapi.json", | |
default_response_class=UJSONResponse, | |
) | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=[settings.frontend_url], | |
allow_origin_regex=settings.allowed_origins_regex, | |
allow_credentials=True, | |
allow_methods=["*"], | |
allow_headers=["*"], | |
) | |
# Adds startup and shutdown events. | |
register_startup_event(app) | |
register_shutdown_event(app) | |
# Main router for the API. | |
app.include_router(router=api_router, prefix="/api") | |
app.exception_handler(PlatformaticError)(platformatic_exception_handler) | |
return app | |