Skip to content

Commit

Permalink
Postpone request decoding to callback usage
Browse files Browse the repository at this point in the history
  • Loading branch information
lundberg committed Oct 13, 2020
1 parent aaac1c3 commit 9a2f85f
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions respx/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -301,14 +301,18 @@ def encode_response(self, content: ContentDataTypes) -> Response:
def raw(self):
content = self._content
if callable(content):
content = content(**self.context)
kwargs = dict(self.context)
request = decode_request(kwargs.pop("request"))
content = content(request, **kwargs)

return self.encode_response(content)

@property
async def araw(self):
if callable(self._content) and inspect.iscoroutinefunction(self._content):
content = await self._content(**self.context)
kwargs = dict(self.context)
request = decode_request(kwargs.pop("request"))
content = await self._content(request, **kwargs)
return self.encode_response(content)

return self.raw
Expand Down Expand Up @@ -363,13 +367,13 @@ def match(self, request: Request) -> Optional[Union[Request, ResponseTemplate]]:
"""
matches = False
url_params: Kwargs = {}
_request = decode_request(request)

if self.pass_through:
return request

if self._match_func:
response = self.response.clone(context={"request": _request})
_request = decode_request(request)
response = self.response.clone(context={"request": request})
result = self._match_func(_request, response)
if result == _request: # Detect pass through
result = request
Expand All @@ -390,6 +394,6 @@ def match(self, request: Request) -> Optional[Union[Request, ResponseTemplate]]:
url_params = match.groupdict()

if matches:
return self.response.clone(context={"request": _request, **url_params})
return self.response.clone(context={"request": request, **url_params})

return None

0 comments on commit 9a2f85f

Please sign in to comment.