@@ -11,8 +11,12 @@ def __init__(self, method, *args, **kargs):
11
11
if hasattr (method , 'pagination_mode' ):
12
12
if method .pagination_mode == 'cursor' :
13
13
self .iterator = CursorIterator (method , args , kargs )
14
- else :
14
+ elif method .pagination_mode == 'id' :
15
+ self .iterator = IdIterator (method , args , kargs )
16
+ elif method .pagination_mode == 'page' :
15
17
self .iterator = PageIterator (method , args , kargs )
18
+ else :
19
+ raise TweepError ('Invalid pagination mode.' )
16
20
else :
17
21
raise TweepError ('This method does not perform pagination' )
18
22
@@ -74,6 +78,32 @@ def prev(self):
74
78
self .count -= 1
75
79
return data
76
80
81
+ class IdIterator (BaseIterator ):
82
+
83
+ def __init__ (self , method , args , kargs ):
84
+ BaseIterator .__init__ (self , method , args , kargs )
85
+ self .max_id = kargs .get ('max_id' )
86
+ self .since_id = kargs .get ('since_id' )
87
+
88
+ def next (self ):
89
+ """Fetch a set of items with IDs less than current set."""
90
+ # max_id is inclusive so decrement by one
91
+ # to avoid requesting duplicate items.
92
+ max_id = self .since_id - 1 if self .max_id else None
93
+ data = self .method (max_id = max_id , * self .args , ** self .kargs )
94
+ self .max_id = data .max_id
95
+ self .since_id = data .since_id
96
+ print 'next!'
97
+ return data
98
+
99
+ def prev (self ):
100
+ """Fetch a set of items with IDs greater than current set."""
101
+ since_id = self .max_id
102
+ data = self .method (since_id = since_id , * self .args , ** self .kargs )
103
+ self .max_id = data .max_id
104
+ self .since_id = data .since_id
105
+ return data
106
+
77
107
class PageIterator (BaseIterator ):
78
108
79
109
def __init__ (self , method , args , kargs ):
0 commit comments