50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from fastapi import FastAPI, Request
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from fastapi.responses import RedirectResponse
|
|
|
|
from endpoints.routes import get_routes
|
|
from open_api_creator import create_openapi_schema
|
|
from middlewares.token_middleware import token_middleware
|
|
from initializer.create_route import RouteRegisterController
|
|
|
|
from config import api_config
|
|
|
|
|
|
def create_events_if_any_cluster_set():
|
|
from events import retrieve_all_clusters
|
|
|
|
for event_cluster in retrieve_all_clusters():
|
|
for event in event_cluster.retrieve_all_event_clusters:
|
|
event.set_events_to_database()
|
|
|
|
|
|
def create_app():
|
|
|
|
application = FastAPI(**api_config.api_info)
|
|
# application.mount(
|
|
# "/application/static",
|
|
# StaticFiles(directory="application/static"),
|
|
# name="static",
|
|
# )
|
|
application.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=api_config.ALLOW_ORIGINS,
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
@application.middleware("http")
|
|
async def add_token_middleware(request: Request, call_next):
|
|
return await token_middleware(request, call_next)
|
|
|
|
@application.get("/", description="Redirect Route", include_in_schema=False)
|
|
async def redirect_to_docs():
|
|
return RedirectResponse(url="/docs")
|
|
|
|
route_register = RouteRegisterController(app=application, router_list=get_routes())
|
|
application = route_register.register_routes()
|
|
create_events_if_any_cluster_set()
|
|
application.openapi = lambda _=application: create_openapi_schema(_)
|
|
return application
|