diff --git a/gitee_api.py b/gitee_api.py new file mode 100644 index 0000000000000000000000000000000000000000..d0a6d8bcb08c7d6f65401ac7c70fa53a26db6610 --- /dev/null +++ b/gitee_api.py @@ -0,0 +1,88 @@ +from loguru import logger +import requests +import json + + +class GiteeCaller: + access_token = '' + gitee_url = '' + + def init_config_attr(access_token, gitee_url): + GiteeCaller.access_token = access_token + GiteeCaller.gitee_url = gitee_url + +class GiteeApi(GiteeCaller): + def __init__(self, data): + self.cookies = None + self.owner = None + self.repo = None + project = data.get('project', None) + if project: + self.owner = project.get('namespace', None) + self.repo = project.get('path', None) + self.pr = data.get('pull_request') + self.pr_number = self.pr.get('number') + if (not self.owner) or (not self.repo) or (not self.pr) or (not self.pr_number): + logger.error('not giteeApi param') + + def list_comments(self): + page = 1 + all_comments = '' + while True: + url = f'{self.gitee_url}/{self.owner}/{self.repo}/pulls/{self.pr_number}/comments' + params = { + 'access_token': access_token, + 'page': page, + } + res = json.loads(requests.get(url=url, params=params)) + all_comments.extend(res) + page += 1 + if not res or len(res) < 100: + break + return all_comments + + def get_all_commit_ids(self): + url = f'{self.gitee_url}/{self.owner}/{self.repo}/pulls/{self.pr_number}/commits' + params = { + 'access_token': self.access_token + } + return json.loads(requests.get(url = url, params=params)) + + def list_review_comments(self): + page = 1 + all_comments = [] + while True: + url = f'{self.gitee_url}/{self.owner}/{self.repo}/pulls/{self.pr_number}/comments' + params = { + 'access_token': self.access_token, + 'page': page, + } + res = json.loads(requests.get(url = url, params=params).content.decode('utf-8')) + all_comments.extend(res) + if not res or len(res) < 100: + break + return all_comments + + def submit_review(self, body, commitId, line): + url = f'{self.gitee_url}/{self.owner}/{self.repo}/pulls/{self.pr_number}/comments' + data = { + 'access_token': self.access_token, + 'body': body, + 'commit_id': commitId, + } + res = requests.post(url = url, data = data) + if res.status_code != 201: + logger.error('post to gitee failed') + else: + logger.info('post to gitee succeed') + + def fetch_pr(self): + url = f'{self.gitee_url}/{self.owner}/{self.repo}/pulls/{self.pr_number}?access_token={self.access_token}' + return json.loads(requests.get(url = url)) + + def compare(self, formerSha, latterSha): + url = f'{self.gitee_url}/{self.owner}/{self.repo}/compare/{formerSha}...{latterSha}' + params = { + 'access_token': access_token, + } + return json.loads(requests.get(url=url, params=params))