File tree Expand file tree Collapse file tree 2 files changed +25
-6
lines changed
Expand file tree Collapse file tree 2 files changed +25
-6
lines changed Original file line number Diff line number Diff line change @@ -4,7 +4,10 @@ class ConfigurationException(Exception):
44
55# Request related exceptions
66class 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
2641class AuthorizationException (BaseRequestException ):
2742 pass
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments