Skip to content

Commit 2cecd7b

Browse files
authored
feat(workos-python): Implement __str__ for BaseRequestException (#57)
1 parent 72e53b8 commit 2cecd7b

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

workos/exceptions.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ class ConfigurationException(Exception):
44

55
# Request related exceptions
66
class BaseRequestException(Exception):
7-
def __init__(self, response, message=None):
7+
def __init__(self, response, message=None, error=None):
8+
super(BaseRequestException, self).__init__(message)
9+
10+
self.error = error
811
self.extract_and_set_response_related_data(response)
912

1013
if message is not None:
@@ -22,6 +25,18 @@ def extract_and_set_response_related_data(self, response):
2225
headers = response.headers
2326
self.request_id = headers.get("X-Request-ID")
2427

28+
def __str__(self):
29+
message = self.message or "No message"
30+
exception = "(message=%s" % message
31+
32+
if self.request_id is not None:
33+
exception += ", request_id=%s" % self.request_id
34+
35+
if self.error is not None:
36+
exception += ", error=%s" % self.error
37+
38+
return exception + ")"
39+
2540

2641
class AuthorizationException(BaseRequestException):
2742
pass

workos/utils/request.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,21 @@ def request(
6565
else:
6666
response = request_fn(url, headers=headers, json=params)
6767

68+
response_json = None
69+
try:
70+
response_json = response.json()
71+
except ValueError:
72+
raise ServerException(response)
73+
6874
status_code = response.status_code
6975
if status_code >= 400 and status_code < 500:
7076
if status_code == 401:
7177
raise AuthenticationException(response)
7278
elif status_code == 403:
7379
raise AuthorizationException(response)
74-
raise BadRequestException(response)
80+
error = response_json.get("error")
81+
raise BadRequestException(response, error=error)
7582
elif status_code >= 500 and status_code < 600:
7683
raise ServerException(response)
7784

78-
try:
79-
return response.json()
80-
except ValueError:
81-
raise ServerException(response)
85+
return response_json

0 commit comments

Comments
 (0)