8000 Update the way exceptions are generated · PNPtutorials/twilio-python@985de29 · GitHub
[go: up one dir, main page]

Skip to content

Commit 985de29

Browse files
author
matt
committed
Update the way exceptions are generated
Attempt to use the Twilio Standard Error payload to generate more informative exceptions
1 parent a13fd02 commit 985de29

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

twilio/version.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import json
22
from math import ceil
3+
34
from twilio import values
4-
from twilio.exceptions import TwilioException
5+
from twilio.exceptions import TwilioRestException
56

67

78
class Version(object):
@@ -35,6 +36,18 @@ def request(self, method, uri, params=None, data=None, headers=None,
3536
allow_redirects=allow_redirects
3637
)
3738

39+
@classmethod
40+
def exception(cls, method, uri, response, message):
41+
# noinspection PyBroadException
42+
try:
43+
error_payload = json.loads(response.content)
44+
if 'message' in error_payload:
45+
message = '{}: {}'.format(message, error_payload['message'])
46+
code = error_payload.get('code', response.status_code)
47+
return TwilioRestException(response.status_code, uri, message, code, method)
48+
except:
49+
return TwilioRestException(response.status_code, uri, message, response.status_code, method)
50+
3851
def fetch(self, method, uri, params=None, data=None, headers=None, auth=None, timeout=None,
3952
allow_redirects=False):
4053
response = self.request(
@@ -49,7 +62,7 @@ def fetch(self, method, uri, params=None, data=None, headers=None, auth=None, ti
4962
)
5063

5164
if response.status_code < 200 or response.status_code >= 300:
52-
raise TwilioException('Unable to fetch record')
65+
raise self.exception(method, uri, response, 'Unable to fetch record')
5366

5467
return json.loads(response.content)
5568

@@ -67,7 +80,7 @@ def update(self, method, uri, params=None, data=None, headers=None, auth=None, t
6780
)
6881

6982
if response.status_code < 200 or response.status_code >= 300:
70-
raise TwilioException('Unable to update record')
83+
raise self.exception(method, uri, response, 'Unable to update record')
7184

7285
return json.loads(response.content)
7386

@@ -85,7 +98,7 @@ def delete(self, method, uri, params=None, data=None, headers=None, auth=None, t
8598
)
8699

87100
if response.status_code < 200 or response.status_code >= 300:
88-
raise TwilioException('Unable to delete record')
101+
raise self.exception(method, uri, response, 'Unable to delete record')
89102

90103
return response.status_code == 204
91104

@@ -150,8 +163,7 @@ def create(self, method, uri, params=None, data=None, headers=None, auth=None, t
150163
)
151164

152165
if response.status_code < 200 or response.status_code >= 300:
153-
raise TwilioException('[{}] Unable to create record\n{}'.format(response.status_code,
154-
response.content))
166+
raise self.exception(method, uri, response, 'Unable to create record')
155167

156168
return json.loads(response.content)
157169

0 commit comments

Comments
 (0)
0