From 8ca103e7605dd79761b66ed8a75d81f126697bbb Mon Sep 17 00:00:00 2001 From: wu Date: Thu, 7 Dec 2023 10:53:59 +0000 Subject: [PATCH 1/2] add moderation.py. Signed-off-by: wu --- moderation.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 moderation.py diff --git a/moderation.py b/moderation.py new file mode 100644 index 00000000..661e5d35 --- /dev/null +++ b/moderation.py @@ -0,0 +1,55 @@ +import json +import logging +import requests +import redis + +from pilot.configs.model_config import config_parser + +logger = logging.getLogger("model_worker") + + +class Moderation: + def __init__(self) -> None: + self.configs = config_parser + self.token_url = self.configs.get('moderation', 'token_url') + self.moderation_url = self.configs.get('moderation', 'moderation_url') + self.redis_host = self.configs.get('redis', 'redis_host') + self.redis_port = self.configs.getint('redis', 'redis_port') + self.redis_db = self.configs.getint('redis', 'redis_db') + self.redis_password = self.configs.get('redis', 'redis_password') + self.redis = redis.Redis(host=self.redis_host, port=self.redis_host, db=self.redis_db, password=self.redis_password) + + def get_token(self, token_data): + token = self.redis.get('moderation_token') + if token: + return token + + headers = { + "Content-Type": "application/json;charset=utf-8", + } + + response = requests.post(url=self.token_url, data=json.dumps(token_data), headers=headers) + token = response.headers.get("X-Subject-Token") + created_at = '2023-13-01' + self.redis.set('moderation_token', token, 36000) + logger.info('...refresh token succeed...') + return token + + def check_text(self, text): + token = self.get_token(self.username, self.password, self.domain, self.project_id) + body = { + "categories": ["terrorism"], + "items": [{ + "text": text, + "type": "content" + } + ] + } + _header = { + "Content-Type": 'application/json', + 'X-Auth-Token': token + } + reslut = requests.post(url=self.moderation_url, data=json.dumps(body), headers=_header) + if reslut.json().get('result').get('suggestion') == 'pass': + return True + return False -- Gitee From ef0f3003be8837d88467fd7c4cfe64e49cc61f04 Mon Sep 17 00:00:00 2001 From: wu Date: Fri, 15 Dec 2023 01:29:05 +0000 Subject: [PATCH 2/2] add gitee_api.py. Signed-off-by: wu --- gitee_api.py | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++ moderation.py | 55 -------------------------------- 2 files changed, 88 insertions(+), 55 deletions(-) create mode 100644 gitee_api.py delete mode 100644 moderation.py diff --git a/gitee_api.py b/gitee_api.py new file mode 100644 index 00000000..d0a6d8bc --- /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)) diff --git a/moderation.py b/moderation.py deleted file mode 100644 index 661e5d35..00000000 --- a/moderation.py +++ /dev/null @@ -1,55 +0,0 @@ -import json -import logging -import requests -import redis - -from pilot.configs.model_config import config_parser - -logger = logging.getLogger("model_worker") - - -class Moderation: - def __init__(self) -> None: - self.configs = config_parser - self.token_url = self.configs.get('moderation', 'token_url') - self.moderation_url = self.configs.get('moderation', 'moderation_url') - self.redis_host = self.configs.get('redis', 'redis_host') - self.redis_port = self.configs.getint('redis', 'redis_port') - self.redis_db = self.configs.getint('redis', 'redis_db') - self.redis_password = self.configs.get('redis', 'redis_password') - self.redis = redis.Redis(host=self.redis_host, port=self.redis_host, db=self.redis_db, password=self.redis_password) - - def get_token(self, token_data): - token = self.redis.get('moderation_token') - if token: - return token - - headers = { - "Content-Type": "application/json;charset=utf-8", - } - - response = requests.post(url=self.token_url, data=json.dumps(token_data), headers=headers) - token = response.headers.get("X-Subject-Token") - created_at = '2023-13-01' - self.redis.set('moderation_token', token, 36000) - logger.info('...refresh token succeed...') - return token - - def check_text(self, text): - token = self.get_token(self.username, self.password, self.domain, self.project_id) - body = { - "categories": ["terrorism"], - "items": [{ - "text": text, - "type": "content" - } - ] - } - _header = { - "Content-Type": 'application/json', - 'X-Auth-Token': token - } - reslut = requests.post(url=self.moderation_url, data=json.dumps(body), headers=_header) - if reslut.json().get('result').get('suggestion') == 'pass': - return True - return False -- Gitee