aboutsummaryrefslogtreecommitdiffstats
path: root/api/app/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'api/app/main.py')
-rw-r--r--api/app/main.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/api/app/main.py b/api/app/main.py
new file mode 100644
index 0000000..e7bf524
--- /dev/null
+++ b/api/app/main.py
@@ -0,0 +1,35 @@
+import time
+
+from fastapi import FastAPI, Request
+from starlette.middleware.cors import CORSMiddleware
+from typing import Callable
+
+
+from app.api.main import api_router
+from app.core.config import settings
+
+async def add_process_time_header(request: Request, call_next: Callable):
+ start_time = time.time()
+ response = await call_next(request)
+ process_time = (time.time() - start_time) * 1000
+ response.headers["Server-Timing"] = f"Total;dur={process_time: .6f}"
+ return response
+
+app = FastAPI(
+ title=settings.PROJECT_NAME,
+ openapi_url="/api/openapi.json"
+)
+app.middleware("http")(add_process_time_header)
+
+# Set all CORS enabled origins
+if settings.all_cors_origins:
+ app.add_middleware(
+ CORSMiddleware,
+ allow_origins=settings.all_cors_origins,
+ allow_credentials=True,
+ allow_methods=["*"],
+ allow_headers=["*"],
+ expose_headers=["etag"],
+ )
+
+app.include_router(api_router, prefix="/api") \ No newline at end of file