From 2cdd5b2f8d62a26653e1d7b5708830a5cb61a0d0 Mon Sep 17 00:00:00 2001 From: Petr Kalashnikov <pka065@it6100016.klientdrift.uib.no> Date: Fri, 14 Jan 2022 13:22:36 +0100 Subject: [PATCH] Setra111: uniform response from put-post methods --- setra_client/client.py | 26 +++++++++++++++++--------- setra_client/models.py | 9 +++++++++ 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/setra_client/client.py b/setra_client/client.py index 4e1663b..bfe4c6c 100644 --- a/setra_client/client.py +++ b/setra_client/client.py @@ -17,6 +17,7 @@ from setra_client.models import ( Detail, AbwOrder, AbwOrderErrors, + ResponseStatusEnum, ) logger = logging.getLogger(__name__) @@ -367,11 +368,12 @@ class SetraClient(object): content = response.content if response.status_code == 202: - return 'Accepted', {} + return ResponseStatusEnum.ACCEPTED, {'code': 202, 'content': None} elif response.status_code == 409: - return 'Conflict', content + return ResponseStatusEnum.CONFLICT, {'code': 409, 'content': None} else: - return 'Unknown', {'code': response.status_code, 'content': content} + return ResponseStatusEnum.UNKNOWN, { + 'code': response.status_code, 'content': content} def put_update_batch(self, batchdata: InputBatch): """ @@ -393,11 +395,12 @@ class SetraClient(object): content = response.content if response.status_code == 204: - return 'Accepted', {} + return ResponseStatusEnum.ACCEPTED, {'code': 204, 'content': None} elif response.status_code == 409: - return 'Conflict', content + return ResponseStatusEnum.CONFLICT, {'code': 409, 'content': None} else: - return 'Unknown', {'code': response.status_code, 'content': content} + return ResponseStatusEnum.UNKNOWN, { + 'code': response.status_code, 'content': content} def get_batch_complete(self, batch_id: str): """ @@ -524,12 +527,17 @@ class SetraClient(object): headers=headers, return_response=True) if response.status_code == 202: - return response.content, 'Accepted' + return ResponseStatusEnum.ACCEPTED, {'code': 202, 'content': None} elif response.status_code == 409: - return response.content, "Conflict" + return ResponseStatusEnum.CONFLICT, {'code': 409, 'content': None} else: + try: + content = response.json() + except ValueError: + content = response.content response.raise_for_status() - return response + return ResponseStatusEnum.UNKNOWN, { + 'code': response.status_code, 'content': content} def get_abw_order_errors(self, abw_order_id: str): """ diff --git a/setra_client/models.py b/setra_client/models.py index 80b8fd2..6cc9a31 100644 --- a/setra_client/models.py +++ b/setra_client/models.py @@ -44,6 +44,15 @@ class BatchProgressEnum(str, Enum): return str(self.value) +class ResponseStatusEnum(str, Enum): + ACCEPTED = 'Accepted' + CONFLICT = 'Conflict' + UNKNOWN = 'Unknown' + + def __str__(self): + return str(self.value) + + class Transaction(BaseModel): account: str amount: float -- GitLab