diff --git a/scripts/notify.py b/scripts/notify.py deleted file mode 100644 --- a/scripts/notify.py +++ /dev/null @@ -1,91 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (C) 2010-2016 RhodeCode GmbH -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License, version 3 -# (only), as published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -# This program is dual-licensed. If you wish to learn more about the -# RhodeCode Enterprise Edition, including its added features, Support services, -# and proprietary license terms, please see https://rhodecode.com/licenses/ - -import argparse - -from rhodecode_api import RhodeCodeAPI - - -def add_api_pr_args(parser): - parser.add_argument("--url", help="Rhodecode host url", required=True) - parser.add_argument("--token", help="Rhodecode user token", required=True) - parser.add_argument("--repoid", help="Repo id", required=True) - parser.add_argument("--message", help="Comment to add", required=True) - parser.add_argument("--status", help="Status to set (approved|rejected)") - parser.add_argument( - "--prid", - help="(Optional) Pull request id") - parser.add_argument( - "--commit-id", - help="(Optional) Expected commit ID for source repo") - - -def get_pr_head(args): - rc = RhodeCodeAPI(args.url, args.token) - pr_info = rc.get_pull_request( - repoid=args.repoid, - pullrequestid=args.prid - ) - if pr_info['error']: - return None - - return pr_info['result']['source']['reference']['commit_id'] - - -def pr_has_same_head(args): - head_id = get_pr_head(args) - return head_id == args.commit_id - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - add_api_pr_args(parser) - args = parser.parse_args() - status = args.status - - rc = RhodeCodeAPI(args.url, args.token) - - if not (args.prid or args.commit_id): - raise AttributeError('You must specify --prid or --commit-id') - - if args.prid: - if args.commit_id and status: - if not pr_has_same_head(args): - # PR updated, don't set status - status = None - - resp = rc.comment_pull_request( - repoid=args.repoid, - pullrequestid=int(args.prid), - message=args.message, - status=status - ) - elif args.commit_id: - resp = rc.comment_commit( - repoid=args.repoid, - commit_id=args.commit_id, - message=args.message, - status=status, - ) - - if resp['error']: - raise Exception(resp['error']) - else: - print resp diff --git a/scripts/rhodecode_api.py b/scripts/rhodecode_api.py deleted file mode 100644 --- a/scripts/rhodecode_api.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (C) 2010-2016 RhodeCode GmbH -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License, version 3 -# (only), as published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -# This program is dual-licensed. If you wish to learn more about the -# RhodeCode Enterprise Edition, including its added features, Support services, -# and proprietary license terms, please see https://rhodecode.com/licenses/ - -import json -import urlparse -import uuid - -import requests - - -class RhodeCodeAPI(object): - """ - Make generic calls to RCE API. - - To call any API method, instanciate the API with the URL of your - RCE instance and your user token. - Then use a method call with the name of your API method, and pass the - correct parameters. - - Will return a dict with the response from the API call - - eg.: - api = RhodeCodeAPI('http://my.rhodecode.com'); - response = api.comment_pull_request( - repoid=args.repoid, - pullrequestid=int(args.prid), - message=args.message, - status=args.status - ) - if response['error']: - raise Exception(resp['error']) - else: - print resp - """ - headers = {'content-type': 'application/json'} - - def __init__(self, instance_url, user_token): - self.url = instance_url - self.key = user_token - - def __getattr__(self, name): - return lambda **kwargs: self._call(name, **kwargs) - - def _call(self, method, **kwargs): - payload = { - 'id': str(uuid.uuid4()), - 'api_key': self.key, - 'method': method, - 'args': kwargs - } - url = urlparse.urljoin(self.url, '_admin/api') - resp = requests.post( - url, data=json.dumps(payload), headers=self.headers) - - if resp.ok: - return resp.json() - else: - resp.raise_for_status()