1
1
from collections import Iterator
2
- from github3 .models import GitHubCore ,urlparse
2
+ from github3 .models import GitHubCore
3
+ from requests .compat import urlparse ,urlencode
3
4
4
5
5
6
class GitHubIterator (GitHubCore ,Iterator ):
6
7
"""The :class:`GitHubIterator` class powers all of the iter_* methods."""
7
- def __init__ (self ,count ,url ,cls ,session ,params = None ,etag = None ):
8
+ def __init__ (self ,count ,url ,cls ,session ,params = None ,etag = None ,
9
+ headers = None ):
8
10
GitHubCore .__init__ (self , {},session )
9
11
#: Original number of items requested
10
12
self .original = count
@@ -25,14 +27,14 @@ def __init__(self, count, url, cls, session, params=None, etag=None):
25
27
#: The ETag Header value returned by GitHub
26
28
self .etag = None
27
29
#: Headers generated for the GET request
28
- self .headers = {}
30
+ self .headers = headers or {}
29
31
#: The last response seen
30
32
self .last_response = None
31
33
#: Last status code received
32
34
self .last_status = 0
33
35
34
36
if etag :
35
- self .headers = {'If-None-Match' :etag }
37
+ self .headers . update ( {'If-None-Match' :etag })
36
38
37
39
self .path = urlparse (self .url ).path
38
40
@@ -98,9 +100,10 @@ def next(self):
98
100
99
101
100
102
class SearchIterator (GitHubIterator ):
101
- def __init__ (self ,count ,url ,cls ,session ,params = None ,etag = None ):
103
+ def __init__ (self ,count ,url ,cls ,session ,params = None ,etag = None ,
104
+ headers = None ):
102
105
super (SearchIterator ,self ).__init__ (count ,url ,cls ,session ,params ,
103
- etag )
106
+ etag , headers )
104
107
self .total_count = 0
105
108
106
109
def __repr__ (self ):