From 3164f882d01af914ae6b4c9b013da1ac022504a9 Mon Sep 17 00:00:00 2001 From: p1c2u Date: Mon, 18 Sep 2023 17:24:52 +0000 Subject: [PATCH] Requests request response binary format support --- openapi_core/contrib/requests/requests.py | 5 ++++- openapi_core/contrib/requests/responses.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/openapi_core/contrib/requests/requests.py b/openapi_core/contrib/requests/requests.py index 00a462f5..c39110cc 100644 --- a/openapi_core/contrib/requests/requests.py +++ b/openapi_core/contrib/requests/requests.py @@ -68,7 +68,10 @@ def body(self) -> Optional[str]: if self.request.body is None: return None if isinstance(self.request.body, bytes): - return self.request.body.decode("utf-8") + try: + return self.request.body.decode("utf-8") + except UnicodeDecodeError: + return self.request.body assert isinstance(self.request.body, str) # TODO: figure out if request._body_position is relevant return self.request.body diff --git a/openapi_core/contrib/requests/responses.py b/openapi_core/contrib/requests/responses.py index 66343802..f31e2ee5 100644 --- a/openapi_core/contrib/requests/responses.py +++ b/openapi_core/contrib/requests/responses.py @@ -12,7 +12,10 @@ def __init__(self, response: Response): @property def data(self) -> str: assert isinstance(self.response.content, bytes) - return self.response.content.decode("utf-8") + try: + return self.response.content.decode("utf-8") + except UnicodeDecodeError: + return self.response.content @property def status_code(self) -> int: