aboutsummaryrefslogtreecommitdiffstats
path: root/api/app/main.py
blob: e7bf5248d2c26519562e656a00a93d215be8f84e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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")