6
6
7
7
8
8
class Version (object ):
9
+ """
10
+ Represents an API version.
11
+ """
9
12
MAX_PAGE_SIZE = 1000
10
13
11
14
def __init__ (self , domain ):
@@ -17,13 +20,22 @@ def __init__(self, domain):
17
20
self .version = None
18
21
19
22
def absolute_url (self , uri ):
23
+ """
24
+ Turns a relative uri into an absolute url.
25
+ """
20
26
return self .domain .absolute_url (self .relative_uri (uri ))
21
27
22
28
def relative_uri (self , uri ):
29
+ """
30
+ Turns a relative uri into a versioned relative uri.
31
+ """
23
32
return '{}/{}' .format (self .version .strip ('/' ), uri .strip ('/' ))
24
33
25
34
def request (self , method , uri , params = None , data = None , headers = None ,
26
35
auth = None , timeout = None , allow_redirects = False ):
36
+ """
37
+ Make an HTTP request.
38
+ """
27
39
url = self .relative_uri (uri )
28
40
return self .domain .request (
29
41
method ,
@@ -38,6 +50,9 @@ def request(self, method, uri, params=None, data=None, headers=None,
38
50
39
51
@classmethod
40
52
def exception (cls , method , uri , response , message ):
53
+ """
54
+ Wraps an exceptional response in a `TwilioRestException`.
55
+ """
41
56
# noinspection PyBroadException
42
57
try :
43
58
error_payload = json .loads (response .content )
@@ -50,6 +65,9 @@ def exception(cls, method, uri, response, message):
50
65
51
66
def fetch (self , method , uri , params = None , data = None , headers = None , auth = None , timeout = None ,
52
67
allow_redirects = False ):
68
+ """
69
+ Fetch a resource instance.
70
+ """
53
71
response = self .request (
54
72
method ,
55
73
uri ,
@@ -68,6 +86,9 @@ def fetch(self, method, uri, params=None, data=None, headers=None, auth=None, ti
68
86
69
87
def update (self , method , uri , params = None , data = None , headers = None , auth = None , timeout = None ,
70
88
allow_redirects = False ):
89
+ """
90
+ Update a resource instance.
91
+ """
71
92
response = self .request (
72
93
method ,
73
94
uri ,
@@ -86,6 +107,9 @@ def update(self, method, uri, params=None, data=None, headers=None, auth=None, t
86
107
87
108
def delete (self , method , uri , params = None , data = None , headers = None , auth = None , timeout = None ,
88
109
allow_redirects = False ):
110
+ """
111
+ Delete a resource.
112
+ """
89
113
response = self .request (
90
114
method ,
91
115
uri ,
@@ -103,12 +127,21 @@ def delete(self, method, uri, params=None, data=None, headers=None, auth=None, t
103
127
return response .status_code == 204
104
128
105
129
def read_limits (self , limit = None , page_size = None ):
130
+ """
131
+ Takes a limit on the max number of records to read and a max page_size
132
+ and calculates the max number of pages to read.
133
+
134
+ :param int limit: Max number of records to read.
135
+ :param int page_size: Max page size.
136
+ :return dict: A dictionary of paging limits.
137
+ """
106
138
page_limit = values .unset
107
139
108
140
if limit is not None :
109
141
110
142
if page_size is None :
111
- # If there is no user-specified page_size, pick the most network efficient size
143
+ # If there is no user-specified page_size, pick the most
144
+ # network efficient size
112
145
page_size = min (limit , self .MAX_PAGE_SIZE )
113
146
114
147
page_limit = int (ceil (limit / float (page_size )))
@@ -121,6 +154,9 @@ def read_limits(self, limit=None, page_size=None):
121
154
122
155
def page (self , method , uri , params = None , data = None , headers = None , auth = None , timeout = None ,
123
156
allow_redirects = False ):
157
+ """
158
+ Makes an HTTP request.
159
+ """
124
160
return self .request (
125
161
method ,
126
162
uri ,
@@ -133,6 +169,13 @@ def page(self, method, uri, params=None, data=None, headers=None, auth=None, tim
133
169
)
134
170
135
171
def stream (self , page , limit = None , page_limit = None ):
172
+ """
173
+ Generates records one a time from a page, stopping at prescribed limits.
174
+
175
+ :param Page page: The page to stream.
176
+ :param int limit: The max number of records to read.
177
+ :param int page_imit: The max number of pages to read.
178
+ """
136
179
current_record = 1
137
180
current_page = 1
138
181
@@ -151,6 +194,9 @@ def stream(self, page, limit=None, page_limit=None):
151
194
152
195
def create (self , method , uri , params = None , data = None , headers = None , auth = None , timeout = None ,
153
196
allow_redirects = False ):
197
+ """
198
+ Create a resource instance.
199
+ """
154
200
response = self .request (
155
201
method ,
156
202
uri ,
0 commit comments