Skip to content

Commit a370cd3

Browse files
wip
1 parent 0fb0ae0 commit a370cd3

File tree

3 files changed

+17
-18
lines changed

3 files changed

+17
-18
lines changed

backend_py/primary/primary/main.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -113,14 +113,12 @@ def custom_generate_unique_id(route: APIRoute) -> str:
113113

114114
session_store = RedisStore(config.REDIS_USER_SESSION_URL, prefix="user-auth:")
115115
app.add_middleware(SessionMiddleware, store=session_store)
116-
116+
app.add_middleware(BrowserCacheMiddleware)
117117
app.add_middleware(ProxyHeadersMiddleware, trusted_hosts="*")
118118

119119
# This middleware instance measures execution time of the endpoints, including the cost of other middleware
120120
app.add_middleware(AddProcessTimeToServerTimingMiddleware, metric_name="total")
121121

122-
app.add_middleware(BrowserCacheMiddleware)
123-
124122

125123
@app.get("/")
126124
async def root() -> str:
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
from functools import wraps
2+
from fastapi.responses import Response, JSONResponse
3+
from fastapi.encoders import jsonable_encoder
24
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
35
from starlette.requests import Request
4-
from starlette.responses import Response
56

67

7-
def browser_cache(max_age: int):
8+
def custom_browser_cache_time(max_age: int):
89
def decorator(func):
910
@wraps(func)
10-
async def wrapper(request: Request, call_next: RequestResponseEndpoint):
11-
response = await func(request, call_next)
12-
response.headers["Cache-Control"] = f"max-age={max_age}"
11+
async def wrapper(*args, **kwargs):
12+
response = await func(*args, **kwargs)
13+
if not isinstance(response, Response):
14+
response = JSONResponse(jsonable_encoder(response))
15+
response.headers["cache-control"] = f"max-age={max_age}"
1316
return response
1417

1518
return wrapper
@@ -19,14 +22,9 @@ async def wrapper(request: Request, call_next: RequestResponseEndpoint):
1922

2023
class BrowserCacheMiddleware(BaseHTTPMiddleware):
2124
async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Response:
22-
# response = await call_next(request)
23-
# handler = request.scope.get("endpoint")
24-
# if hasattr(handler, "Cache-Control"):
25-
# max_age = response.headers["Cache-Control"]
26-
# response.headers["Cache-Control"] = f"max-age={max_age}"
27-
28-
# elif request.method == "GET":
29-
# response.headers["Cache-Control"] = "max-age=3600"
30-
# return response
3125
response = await call_next(request)
26+
27+
if response.headers.get("cache-control") is None and request.method == "GET":
28+
response.headers["cache-control"] = "max-age=3600"
29+
3230
return response

backend_py/primary/primary/routers/well/router.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22
from typing import List, Union
33

4-
from fastapi import APIRouter, Depends, Query
4+
from fastapi import APIRouter, Depends, Query, Request
55

66
from primary.services.smda_access.drogon import DrogonSmdaAccess
77
from primary.services.smda_access import SmdaAccess
@@ -11,6 +11,8 @@
1111

1212
from primary.services.ssdl_access.well_access import WellAccess as SsdlWellAccess
1313

14+
from primary.middleware.browser_cache import custom_browser_cache_time
15+
1416
from . import schemas
1517
from . import converters
1618

@@ -40,6 +42,7 @@ async def get_drilled_wellbore_headers(
4042

4143

4244
@router.get("/well_trajectories/")
45+
@custom_browser_cache_time(max_age=10)
4346
async def get_well_trajectories(
4447
# fmt:off
4548
authenticated_user: AuthenticatedUser = Depends(AuthHelper.get_authenticated_user),

0 commit comments

Comments
 (0)