diff --git a/setra_client/client.py b/setra_client/client.py index 4e1663b824af847a85c18db48b0743e1513cd21a..bfe4c6cbc2b11f997a0659251def2a0f2a793e42 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 80b8fd2c013aa56b150e7033c9017c49cc58eab6..6cc9a3140ba9e8fe8f66a14ca0ffa607e55e7cea 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