Thanks to visit codestin.com
Credit goes to github.com

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)