Show More
@@ -7,6 +7,8 b' except NameError:' | |||||
7 | pass |
|
7 | pass | |
8 |
|
8 | |||
9 | import os |
|
9 | import os | |
|
10 | import re | |||
|
11 | import sys | |||
10 |
|
12 | |||
11 | import requests |
|
13 | import requests | |
12 | import getpass |
|
14 | import getpass | |
@@ -86,21 +88,56 b" def post_gist(content, description='', filename='file', auth=False):" | |||||
86 | response_data = json.loads(response.text) |
|
88 | response_data = json.loads(response.text) | |
87 | return response_data['html_url'] |
|
89 | return response_data['html_url'] | |
88 |
|
90 | |||
89 | def get_pull_request(project, num): |
|
91 | def get_pull_request(project, num, auth=False): | |
90 | """get pull request info by number |
|
92 | """get pull request info by number | |
91 | """ |
|
93 | """ | |
92 | url = "https://api.github.com/repos/{project}/pulls/{num}".format(project=project, num=num) |
|
94 | url = "https://api.github.com/repos/{project}/pulls/{num}".format(project=project, num=num) | |
93 | response = requests.get(url) |
|
95 | if auth: | |
|
96 | header = make_auth_header() | |||
|
97 | else: | |||
|
98 | header = None | |||
|
99 | response = requests.get(url, headers=header) | |||
94 | response.raise_for_status() |
|
100 | response.raise_for_status() | |
95 | return json.loads(response.text, object_hook=Obj) |
|
101 | return json.loads(response.text, object_hook=Obj) | |
96 |
|
102 | |||
97 | def get_pulls_list(project): |
|
103 | element_pat = re.compile(r'<(.+?)>') | |
|
104 | rel_pat = re.compile(r'rel=[\'"](\w+)[\'"]') | |||
|
105 | ||||
|
106 | def get_paged_request(url, headers=None): | |||
|
107 | """get a full list, handling APIv3's paging""" | |||
|
108 | results = [] | |||
|
109 | while True: | |||
|
110 | print("fetching %s" % url, file=sys.stderr) | |||
|
111 | response = requests.get(url, headers=headers) | |||
|
112 | response.raise_for_status() | |||
|
113 | results.extend(response.json()) | |||
|
114 | if 'next' in response.links: | |||
|
115 | url = response.links['next']['url'] | |||
|
116 | else: | |||
|
117 | break | |||
|
118 | return results | |||
|
119 | ||||
|
120 | def get_pulls_list(project, state="closed", auth=False): | |||
98 | """get pull request list |
|
121 | """get pull request list | |
99 | """ |
|
122 | """ | |
100 | url = "https://api.github.com/repos/{project}/pulls".format(project=project) |
|
123 | url = "https://api.github.com/repos/{project}/pulls?state={state}&per_page=100".format(project=project, state=state) | |
101 | response = requests.get(url) |
|
124 | if auth: | |
102 | response.raise_for_status() |
|
125 | headers = make_auth_header() | |
103 | return json.loads(response.text) |
|
126 | else: | |
|
127 | headers = None | |||
|
128 | pages = get_paged_request(url, headers=headers) | |||
|
129 | return pages | |||
|
130 | ||||
|
131 | def get_issues_list(project, state="closed", auth=False): | |||
|
132 | """get pull request list | |||
|
133 | """ | |||
|
134 | url = "https://api.github.com/repos/{project}/pulls?state={state}&per_page=100".format(project=project, state=state) | |||
|
135 | if auth: | |||
|
136 | headers = make_auth_header() | |||
|
137 | else: | |||
|
138 | headers = None | |||
|
139 | pages = get_paged_request(url, headers=headers) | |||
|
140 | return pages | |||
104 |
|
141 | |||
105 | # encode_multipart_formdata is from urllib3.filepost |
|
142 | # encode_multipart_formdata is from urllib3.filepost | |
106 | # The only change is to iter_fields, to enforce S3's required key ordering |
|
143 | # The only change is to iter_fields, to enforce S3's required key ordering |
General Comments 0
You need to be logged in to leave comments.
Login now