10000 Document `page.py` · robscc/twilio-python@92cd5a8 · GitHub
[go: up one dir, main page]

Skip to content

Commit 92cd5a8

Browse files
author
Doug Black
committed
Document page.py
1 parent 80cc506 commit 92cd5a8

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

twilio/page.py

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33

44

55
class Page(object):
6+
"""
7+
Represents a page of records in a collection.
8+
9+
A `Page` lets you iterate over its records and fetch the next and previous
10+
pages in the collection.
11+
"""
612
META_KEYS = {
713
'end',
814
'first_page_uri',
@@ -26,22 +32,40 @@ def __init__(self, version, response):
2632
self._records = iter(self.load_page(payload))
2733

2834
def __iter__(self):
35+
"""
36+
A `Page` is a valid iterator.
37+
"""
2938
return self
3039

3140
def __next__(self):
3241
return self.next()
3342

3443
def next(self):
44+
"""
45+
Returns the next record in the `Page`.
46+
"""
3547
return self.get_instance(next(self._records))
3648

3749
@classmethod
3850
def process_response(self, response):
51+
"""
52+
Load a JSON response.
53+
54+
:param Response response: The HTTP response.
55+
:return dict: The JSON-loaded content.
56+
"""
3957
if response.status_code != 200:
4058
raise TwilioException('Unable to fetch page', response)
4159

4260
return json.loads(response.content)
4361

4462
def load_page(self, payload):
63+
"""
64+
Parses the collection of records out of a list payload.
65+
66+
:param dict payload: The JSON-loaded content.
67+
:return list: The list of records.
68+
"""
4569
if 'meta' in payload and 'key' in payload['meta']:
4670
return payload[payload['meta']['key']]
4771
else:
@@ -54,6 +78,9 @@ def load_page(self, payload):
5478

5579
@property
5680
def previous_page_url(self):
81+
"""
82+
:return str: Returns a link to the previous_page_url or None if doesn't exist.
83+
"""
5784
if 'meta' in self._payload and 'previous_page_url' in self._payload['meta']:
5885
return self._payload['meta']['previous_page_url']
5986
elif 'previous_page_uri' in self._payload and self._payload['previous_page_uri']:
@@ -63,6 +90,9 @@ def previous_page_url(self):
6390

6491
@property
6592
def next_page_url(self):
93+
"""
94+
:return str: Returns a link to the next_page_url or None if doesn't exist.
95+
"""
6696
if 'meta' in self._payload and 'next_page_url' in self._payload['meta']:
6797
return self._payload['meta']['next_page_url']
6898
elif 'next_page_uri' in self._payload and self._payload['next_page_uri']:
@@ -71,9 +101,17 @@ def next_page_url(self):
71101
return None
72102

73103
def get_instance(self, payload):
104+
"""
105+
:param dict payload: A JSON-loaded representation of an instance record.
106+
:return: A rich, resource-dependent object.
107+
"""
74108
raise TwilioException('Page.get_instance() must be implemented in the derived class')
75109

76110
def next_page(self):
111+
"""
112+
Return the `Page` after this one.
113+
:return Page: The next page.
114+
"""
77115
if not self.next_page_url:
78116
return None
79117

@@ -82,6 +120,10 @@ def next_page(self):
82120
return cls(self._version, response, self._solution)
83121

84122
def previous_page(self):
123+
"""
124+
Return the `Page` before this one.
125+
:return Page: The previous page.
126+
"""
85127
if not self.previous_page_url:
86128
return None
87129

@@ -91,4 +133,3 @@ def previous_page(self):
91133

92134
def __repr__(self):
93135
return '<Page>'
94-

0 commit comments

Comments
 (0)
0