@@ -8,70 +8,35 @@ class BaseRequestException(Exception):
88 def __init__ (
99 self ,
1010 response : httpx .Response ,
11- message : Optional [str ] = None ,
12- error : Optional [str ] = None ,
13- errors : Optional [Mapping [str , Any ]] = None ,
14- error_description : Optional [str ] = None ,
15- code : Optional [str ] = None ,
16- pending_authentication_token : Optional [str ] = None ,
11+ response_json : Optional [Mapping [str , Any ]],
1712 ) -> None :
18- super (BaseRequestException , self ).__init__ (message )
13+ super (BaseRequestException , self ).__init__ (response_json )
1914
20- self .message = message
21- self .error = error
22- self .errors = errors
23- self .code = code
24- self .error_description = error_description
25- self .pending_authentication_token = pending_authentication_token
26- self .extract_and_set_response_related_data (response )
27-
28- def extract_and_set_response_related_data (self , response : httpx .Response ) -> None :
2915 self .response = response
16+ self .response_json = response_json
3017
31- try :
32- response_json = response .json ()
33- self .message = response_json .get ("message" )
34- self .error = response_json .get ("error" )
35- self .errors = response_json .get ("errors" )
36- self .code = response_json .get ("code" )
37- self .error_description = response_json .get ("error_description" )
38- self .pending_authentication_token = response_json .get (
39- "pending_authentication_token"
40- )
41- except ValueError :
42- self .message = None
43- self .error = None
44- self .errors = None
45- self .code = None
46- self .error_description = None
47- self .pending_authentication_token = None
48-
49- headers = response .headers
50- self .request_id = headers .get ("X-Request-ID" )
51-
52- def __str__ (self ) -> str :
53- message = self .message or "No message"
54- exception = "(message=%s" % message
18+ self .message = self .extract_from_json ("message" , "No message" )
19+ self .error = self .extract_from_json ("error" , "Unknown" )
20+ self .errors = self .extract_from_json ("errors" , None )
21+ self .code = self .extract_from_json ("code" , None )
22+ self .error_description = self .extract_from_json ("error_description" , "Unknown" )
5523
56- if self .request_id is not None :
57- exception += ", request_id=%s" % self .request_id
24+ self .request_id = response .headers .get ("X-Request-ID" )
5825
59- if self .code is not None :
60- exception += ", code=%s" % self .code
26+ def extract_from_json (self , key : str , alt : Optional [str ] = None ) -> Optional [str ]:
27+ if self .response_json is None :
28+ return alt
6129
62- if self .error is not None :
63- exception += ", error=%s" % self .error
30+ return self .response_json .get (key , alt )
6431
65- if self .errors is not None :
66- exception += ", errors=%s" % self .errors
67-
68- if self .error_description is not None :
69- exception += ", error_description=%s" % self .error_description
32+ def __str__ (self ) -> str :
33+ exception = "(message=%s" % self .message
34+ exception += ", request_id=%s" % self .request_id
7035
71- if self .pending_authentication_token is not None :
72- exception += (
73- ", pending_authentication_token=%s" % self . pending_authentication_token
74- )
36+ if self .response_json is not None :
37+ for key , value in self . response_json . items ():
38+ if key != "message" :
39+ exception += ", %s=%s" % ( key , value )
7540
7641 return exception + ")"
7742
0 commit comments