mirror of
https://github.com/QuasarApp/QuasarAppCoin.git
synced 2025-04-30 03:34:36 +00:00
contrib: gh-merge: Use pagination to fetch all review comments
This commit is contained in:
parent
0c9de67f34
commit
942ff2054b
@ -47,17 +47,36 @@ def git_config_get(option, default=None):
|
|||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
return default
|
return default
|
||||||
|
|
||||||
def retrieve_json(req, ghtoken):
|
def get_response(req_url, ghtoken):
|
||||||
|
req = Request(req_url)
|
||||||
|
if ghtoken is not None:
|
||||||
|
req.add_header('Authorization', 'token ' + ghtoken)
|
||||||
|
return urlopen(req)
|
||||||
|
|
||||||
|
def retrieve_json(req_url, ghtoken, use_pagination=False):
|
||||||
'''
|
'''
|
||||||
Retrieve json from github.
|
Retrieve json from github.
|
||||||
Return None if an error happens.
|
Return None if an error happens.
|
||||||
'''
|
'''
|
||||||
try:
|
try:
|
||||||
if ghtoken is not None:
|
|
||||||
req.add_header('Authorization', 'token ' + ghtoken)
|
|
||||||
result = urlopen(req)
|
|
||||||
reader = codecs.getreader('utf-8')
|
reader = codecs.getreader('utf-8')
|
||||||
obj = json.load(reader(result))
|
if not use_pagination:
|
||||||
|
return json.load(reader(get_response(req_url, ghtoken)))
|
||||||
|
|
||||||
|
obj = []
|
||||||
|
page_num = 1
|
||||||
|
while True:
|
||||||
|
req_url_page = '{}?page={}'.format(req_url, page_num)
|
||||||
|
result = get_response(req_url_page, ghtoken)
|
||||||
|
obj.extend(json.load(reader(result)))
|
||||||
|
|
||||||
|
link = result.headers.get('link', None)
|
||||||
|
if link is not None:
|
||||||
|
link_next = [l for l in link.split(',') if 'rel="next"' in l]
|
||||||
|
if len(link_next) > 0:
|
||||||
|
page_num = int(link_next[0][link_next[0].find("page=")+5:link_next[0].find(">")])
|
||||||
|
continue
|
||||||
|
break
|
||||||
return obj
|
return obj
|
||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
error_message = e.read()
|
error_message = e.read()
|
||||||
@ -69,16 +88,16 @@ def retrieve_json(req, ghtoken):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def retrieve_pr_info(repo,pull,ghtoken):
|
def retrieve_pr_info(repo,pull,ghtoken):
|
||||||
req = Request("https://api.github.com/repos/"+repo+"/pulls/"+pull)
|
req_url = "https://api.github.com/repos/"+repo+"/pulls/"+pull
|
||||||
return retrieve_json(req,ghtoken)
|
return retrieve_json(req_url,ghtoken)
|
||||||
|
|
||||||
def retrieve_pr_comments(repo,pull,ghtoken):
|
def retrieve_pr_comments(repo,pull,ghtoken):
|
||||||
req = Request("https://api.github.com/repos/"+repo+"/issues/"+pull+"/comments")
|
req_url = "https://api.github.com/repos/"+repo+"/issues/"+pull+"/comments"
|
||||||
return retrieve_json(req,ghtoken)
|
return retrieve_json(req_url,ghtoken,use_pagination=True)
|
||||||
|
|
||||||
def retrieve_pr_reviews(repo,pull,ghtoken):
|
def retrieve_pr_reviews(repo,pull,ghtoken):
|
||||||
req = Request("https://api.github.com/repos/"+repo+"/pulls/"+pull+"/reviews")
|
req_url = "https://api.github.com/repos/"+repo+"/pulls/"+pull+"/reviews"
|
||||||
return retrieve_json(req,ghtoken)
|
return retrieve_json(req_url,ghtoken,use_pagination=True)
|
||||||
|
|
||||||
def ask_prompt(text):
|
def ask_prompt(text):
|
||||||
print(text,end=" ",file=stderr)
|
print(text,end=" ",file=stderr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user