dia-gov's picture
Upload 569 files
cd6f98e verified
Raw History Blame Contribute Delete
1.55 kB
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