Skip to content

Commit 5f4fe87

Browse files
committed
Lab 8: Aggregate Pattern 2
1 parent d5314b2 commit 5f4fe87

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

app/data/__init__.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@
1010
"nyt": NYTLocationService(),
1111
}
1212

13+
class DataSourceRequest:
14+
def __init__(self, request): # request is of Obj reference of Reqeust from FastAPI
15+
self.request = request
16+
17+
def get_data_source(self):
18+
"""
19+
Retrieves the provided data-source service.
1320
14-
def data_source(source):
15-
"""
16-
Retrieves the provided data-source service.
17-
18-
:returns: The service.
19-
:rtype: LocationService
20-
"""
21-
return DATA_SOURCES.get(source.lower())
21+
:returns: The service.
22+
:rtype: LocationService
23+
"""
24+
request_source = self.request.query_params.get("source", default="jhu") # gets source parameters
25+
return DATA_SOURCES.get(request_source.lower())

app/main.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from sentry_sdk.integrations.asgi import SentryAsgiMiddleware
1515

1616
from .config import get_settings
17-
from .data import data_source
17+
from .data import DataSourceRequest
1818
from .routers import V1, V2
1919
from .utils.httputils import setup_client_session, teardown_client_session
2020

@@ -74,17 +74,19 @@ async def add_datasource(request: Request, call_next):
7474
Attach the data source to the request.state.
7575
"""
7676
# Retrieve the datas ource from query param.
77-
source = data_source(request.query_params.get("source", default="jhu"))
77+
requested_data_source = DataSourceRequest(request)
78+
data_source = requested_data_source.get_data_source()
79+
7880

79-
# Abort with 404 if source cannot be found.
80-
if not source:
81+
# Abort with 404 if data_source cannot be found.
82+
if not data_source:
8183
return Response("The provided data-source was not found.", status_code=404)
8284

8385
# Attach source to request.
84-
request.state.source = source
86+
request.state.data_source = data_source
8587

8688
# Move on...
87-
LOGGER.debug(f"source provided: {source.__class__.__name__}")
89+
LOGGER.debug(f"source provided: {data_source.__class__.__name__}")
8890
response = await call_next(request)
8991
return response
9092

0 commit comments

Comments
 (0)