1
1
import json
2
2
from math import ceil
3
+
3
4
from twilio import values
4
- from twilio .exceptions import TwilioException
5
+ from twilio .exceptions import TwilioRestException
5
6
6
7
7
8
class Version (object ):
@@ -35,6 +36,18 @@ def request(self, method, uri, params=None, data=None, headers=None,
35
36
allow_redirects = allow_redirects
36
37
)
37
38
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
+
38
51
def fetch (self , method , uri , params = None , data = None , headers = None , auth = None , timeout = None ,
39
52
allow_redirects = False ):
40
53
response = self .request (
@@ -49,7 +62,7 @@ def fetch(self, method, uri, params=None, data=None, headers=None, auth=None, ti
49
62
)
50
63
51
64
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' )
53
66
54
67
return json .loads (response .content )
55
68
@@ -67,7 +80,7 @@ def update(self, method, uri, params=None, data=None, headers=None, auth=None, t
67
80
)
68
81
69
82
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' )
71
84
72
85
return json .loads (response .content )
73
86
@@ -85,7 +98,7 @@ def delete(self, method, uri, params=None, data=None, headers=None, auth=None, t
85
98
)
86
99
87
100
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' )
89
102
90
103
return response .status_code == 204
91
104
@@ -150,8 +163,7 @@ def create(self, method, uri, params=None, data=None, headers=None, auth=None, t
150
163
)
151
164
152
165
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' )
155
167
156
168
return json .loads (response .content )
157
169
0 commit comments