From 8c4a9dc7988a259319bfb82e587291f8de86863e Mon Sep 17 00:00:00 2001 From: zhangting85 <89507288@qq.com> Date: Sun, 14 Apr 2019 19:46:20 +0800 Subject: [PATCH 01/55] Teach 005 (#5) * init commit * add the login of github by username:password or by token * make the 1st api packed * format the code * add more methods * remove the token * fix the format * teach branch 005 * remove token * remove import json --- api/__init__.py | 0 api/repositories/__init__.py | 0 api/repositories/repos.py | 56 ++++++++++++++++++++++++++++++++++ core/__init__.py | 0 core/rest_client.py | 58 ++++++++++++++++++++++++++++++++++++ github.py | 54 +++++++++++++++++++++++++++++++++ 6 files changed, 168 insertions(+) create mode 100644 api/__init__.py create mode 100644 api/repositories/__init__.py create mode 100644 api/repositories/repos.py create mode 100644 core/__init__.py create mode 100644 core/rest_client.py create mode 100644 github.py diff --git a/api/__init__.py b/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/repositories/__init__.py b/api/repositories/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/repositories/repos.py b/api/repositories/repos.py new file mode 100644 index 0000000..68c1dc0 --- /dev/null +++ b/api/repositories/repos.py @@ -0,0 +1,56 @@ +from core.rest_client import RestClient + + +class Repos(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Repos, self).__init__(api_root_url, **kwargs) + + def list_your_repos(self, **kwargs): + """ + https://developer.github.com/v3/repos/#list-your-repositories + """ + return self.get("/user/repos", **kwargs) + + def list_user_repos(self, username, **kwargs): + """ + https://developer.github.com/v3/repos/#list-user-repositories + :param username: username + """ + return self.get("/users/{}/repos".format(username), **kwargs) + + def list_organization_repos(self, org, **kwargs): + """ + https://developer.github.com/v3/repos/#list-organization-repositories + :param org: orgnization name + """ + return self.get("/orgs/{}/repos".format(org), **kwargs) + + def list_all_public_repos(self, **kwargs): + """ + https://developer.github.com/v3/repos/#list-all-public-repositories + """ + return self.get("/repositories", **kwargs) + + def create_user_repo(self, **kwargs): + """ + https://developer.github.com/v3/repos/#create + """ + return self.post("/user/repos", **kwargs) + + def create_organization_repo(self, org, **kwargs): + """ + https://developer.github.com/v3/repos/#create + """ + return self.post("/orgs/{}/repos".format(org), **kwargs) + + def get_repo(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/#get + """ + return self.get("/repos/{}/{}".format(owner, repo), **kwargs) + + def edit_repo(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/#edit + """ + return self.patch("/repos/{}/{}".format(owner, repo), **kwargs) diff --git a/core/__init__.py b/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/rest_client.py b/core/rest_client.py new file mode 100644 index 0000000..bf07fbc --- /dev/null +++ b/core/rest_client.py @@ -0,0 +1,58 @@ +import requests +import json as json_parser + + +class RestClient(): + def __init__(self, api_root_url, username=None, password=None, token=None): + self.api_root_url = api_root_url + self.session = requests.session() + if username and password: + self.session.auth = (username, password) + elif token: + self.session.headers["Authorization"] = "token {}".format(token) + + def get(self, url, **kwargs): + return self.request(url, "get", **kwargs) + + def post(self, url, data=None, json=None, **kwargs): + return self.request(url, "post", data, json, **kwargs) + + def options(self, url, **kwargs): + return self.request(url, "potions", **kwargs) + + def head(self, url, **kwargs): + return self.request(url, "head", **kwargs) + + def put(self, url, data=None, **kwargs): + return self.request(url, "put", data, **kwargs) + + def patch(self, url, data=None, **kwargs): + return self.request(url, "patch", data, **kwargs) + + def delete(self, url, **kwargs): + return self.request(url, "delete", **kwargs) + + def request(self, url, method_name, data=None, json=None, **kwargs): + url = self.api_root_url + url + if method_name == "get": + return self.session.get(url, **kwargs) + if method_name == "post": + return self.session.post(url, data, json, **kwargs) + if method_name == "options": + return self.session.options(url, **kwargs) + if method_name == "head": + return self.session.head(url, **kwargs) + if method_name == "put": + return self.session.put(url, data, **kwargs) + if method_name == "patch": + if json: + data = json_parser.dumps(json) + return self.session.patch(url, data, **kwargs) + if method_name == "delete": + return self.session.delete(url, **kwargs) + + +if __name__ == '__main__': + r = RestClient("http://httpbin.org") + x = r.post("/post", json={"a": "b"}) + print(x.text) diff --git a/github.py b/github.py new file mode 100644 index 0000000..3a3da8e --- /dev/null +++ b/github.py @@ -0,0 +1,54 @@ +from api.repositories.repos import Repos + + +class Github(): + def __init__(self, **kwargs): + self.api_root_url = "https://api.github.com" + self.repos = Repos(self.api_root_url, **kwargs) + + +if __name__ == '__main__': + r = Github(token="xxxxx") + username = "zhangting85" + orgnname = "xxxx" + + # case 1 + data = { + "name": "Hello-WorldXXX", + "description": "This is your first repository", + "homepage": "https://github.com", + "private": False, + "has_issues": True, + "has_projects": True, + "has_wiki": True + } + x = r.repos.create_user_repo(json=data) + print(x.status_code) + assert x.status_code == 201 + + # case 2 + x = r.repos.create_organization_repo(org=orgnname, json=data) + print(x.status_code) + assert x.status_code == 201 + + # case 3 + x = r.repos.get_repo(username, "Hello-World") + print(x.status_code) + assert x.status_code == 200 + print(x.text) + + # case 4 + data = { + "name": "Hello-World", + "description": "YYYY:This is your first repository ", + "homepage": "https://github.com", + "private": False, + "has_issues": True, + "has_projects": True, + "has_wiki": True + } + + x = r.repos.edit_repo(username, "Hello-World", json=data) + print(x.status_code) + print(x.text) + assert x.status_code == 200 From 5ded9c1a072831ced650928acf713d2d125b0130 Mon Sep 17 00:00:00 2001 From: zhangting <89507288@qq.com> Date: Wed, 17 Apr 2019 21:00:29 +0800 Subject: [PATCH 02/55] create the folders --- api/activity/__init__.py | 0 api/checks/__init__.py | 0 api/gists/__init__.py | 0 api/git_data/__init__.py | 0 api/github_apps/__init__.py | 0 api/github_marketplace/__init__.py | 0 api/interactions/__init__.py | 0 api/issues/__init__.py | 0 api/issues/issues.py | 12 ++++++++ api/migrations/__init__.py | 0 api/miscellaneous/__init__.py | 0 api/organizations/__init__.py | 0 api/projects/__init__.py | 0 api/pull_requests/__init__.py | 0 api/reactions/__init__.py | 0 api/scim/__init__.py | 0 api/search/__init__.py | 0 api/teams/__init__.py | 0 api/users/__init__.py | 0 core/rest_client.py | 5 --- github.py | 49 ++---------------------------- 21 files changed, 14 insertions(+), 52 deletions(-) create mode 100644 api/activity/__init__.py create mode 100644 api/checks/__init__.py create mode 100644 api/gists/__init__.py create mode 100644 api/git_data/__init__.py create mode 100644 api/github_apps/__init__.py create mode 100644 api/github_marketplace/__init__.py create mode 100644 api/interactions/__init__.py create mode 100644 api/issues/__init__.py create mode 100644 api/issues/issues.py create mode 100644 api/migrations/__init__.py create mode 100644 api/miscellaneous/__init__.py create mode 100644 api/organizations/__init__.py create mode 100644 api/projects/__init__.py create mode 100644 api/pull_requests/__init__.py create mode 100644 api/reactions/__init__.py create mode 100644 api/scim/__init__.py create mode 100644 api/search/__init__.py create mode 100644 api/teams/__init__.py create mode 100644 api/users/__init__.py diff --git a/api/activity/__init__.py b/api/activity/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/checks/__init__.py b/api/checks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/gists/__init__.py b/api/gists/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/git_data/__init__.py b/api/git_data/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/github_apps/__init__.py b/api/github_apps/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/github_marketplace/__init__.py b/api/github_marketplace/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/interactions/__init__.py b/api/interactions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/issues/__init__.py b/api/issues/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/issues/issues.py b/api/issues/issues.py new file mode 100644 index 0000000..ec24bf0 --- /dev/null +++ b/api/issues/issues.py @@ -0,0 +1,12 @@ +from core.rest_client import RestClient + + +class Issues(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Issues, self).__init__(api_root_url, **kwargs) + + def create_issue(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/issues/#create-an-issue + """ + return self.post("/repos/{}/{}/issues".format(owner, repo), **kwargs) diff --git a/api/migrations/__init__.py b/api/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/miscellaneous/__init__.py b/api/miscellaneous/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/organizations/__init__.py b/api/organizations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/projects/__init__.py b/api/projects/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/pull_requests/__init__.py b/api/pull_requests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/reactions/__init__.py b/api/reactions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/scim/__init__.py b/api/scim/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/search/__init__.py b/api/search/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/teams/__init__.py b/api/teams/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/users/__init__.py b/api/users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/rest_client.py b/core/rest_client.py index bf07fbc..dada251 100644 --- a/core/rest_client.py +++ b/core/rest_client.py @@ -51,8 +51,3 @@ def request(self, url, method_name, data=None, json=None, **kwargs): if method_name == "delete": return self.session.delete(url, **kwargs) - -if __name__ == '__main__': - r = RestClient("http://httpbin.org") - x = r.post("/post", json={"a": "b"}) - print(x.text) diff --git a/github.py b/github.py index 3a3da8e..1454899 100644 --- a/github.py +++ b/github.py @@ -1,54 +1,9 @@ from api.repositories.repos import Repos +from api.issues.issues import Issues class Github(): def __init__(self, **kwargs): self.api_root_url = "https://api.github.com" self.repos = Repos(self.api_root_url, **kwargs) - - -if __name__ == '__main__': - r = Github(token="xxxxx") - username = "zhangting85" - orgnname = "xxxx" - - # case 1 - data = { - "name": "Hello-WorldXXX", - "description": "This is your first repository", - "homepage": "https://github.com", - "private": False, - "has_issues": True, - "has_projects": True, - "has_wiki": True - } - x = r.repos.create_user_repo(json=data) - print(x.status_code) - assert x.status_code == 201 - - # case 2 - x = r.repos.create_organization_repo(org=orgnname, json=data) - print(x.status_code) - assert x.status_code == 201 - - # case 3 - x = r.repos.get_repo(username, "Hello-World") - print(x.status_code) - assert x.status_code == 200 - print(x.text) - - # case 4 - data = { - "name": "Hello-World", - "description": "YYYY:This is your first repository ", - "homepage": "https://github.com", - "private": False, - "has_issues": True, - "has_projects": True, - "has_wiki": True - } - - x = r.repos.edit_repo(username, "Hello-World", json=data) - print(x.status_code) - print(x.text) - assert x.status_code == 200 + self.issues = Issues(self.api_root_url, **kwargs) From 5b9504ea453a132216b2587f73bc61a83d537592 Mon Sep 17 00:00:00 2001 From: ouyangwuhai <303423249@qq.com> Date: Wed, 24 Apr 2019 00:10:01 +0800 Subject: [PATCH 03/55] =?UTF-8?q?=E5=A2=9E=E5=8A=A0statistics=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=B0=81=E8=A3=85=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/statistics.py | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 api/repositories/statistics.py diff --git a/api/repositories/statistics.py b/api/repositories/statistics.py new file mode 100644 index 0000000..ccda15a --- /dev/null +++ b/api/repositories/statistics.py @@ -0,0 +1,35 @@ +from core.rest_client import RestClient + +class Statistics(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Statistics, self).__init__(api_root_url, **kwargs) + + def get_contributors_list(self,owner,repo,**kwargs): + """ + https://developer.github.com/v3/repos/statistics/#get-contributors-list-with-additions-deletions-and-commit-counts + """ + return self.get("/repos/{}/{}/stats/contributors".format(owner,repo),**kwargs) + + def get_last_year_commit(self,owner,repo,**kwargs): + """ + https://developer.github.com/v3/repos/statistics/#get-the-last-year-of-commit-activity-data + """ + return self.get("/repos/{}/{}/stats/commit_activity".format(owner,repo),**kwargs) + + def get_number_of_additions_deletions(self,owner,repo,**kwargs): + """ + https://developer.github.com/v3/repos/statistics/#get-the-number-of-additions-and-deletions-per-week + """ + return self.get("/repos/{}/{}/stats/code_frequency".format(owner,repo),**kwargs) + + def get_weekly_commit_count(self,owner,repo,**kwargs): + """ + https://developer.github.com/v3/repos/statistics/#get-the-weekly-commit-count-for-the-repository-owner-and-everyone-else + """ + return self.get("/repos/{}/{}/stats/participation".format(owner,repo),**kwargs) + + def get_numbers_commits_hour(self,owner,repo,**kwargs): + """ + https://developer.github.com/v3/repos/statistics/#get-the-number-of-commits-per-hour-in-each-day + """ + self.get("/repos/{}/{}/stats/punch_card".format(owner,repo),**kwargs) From b164332579ee66414e767becbcdb970ff6bc00c8 Mon Sep 17 00:00:00 2001 From: ouyangwuhai <303423249@qq.com> Date: Thu, 25 Apr 2019 23:05:56 +0800 Subject: [PATCH 04/55] =?UTF-8?q?=E5=A2=9E=E5=8A=A0statuses=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=B0=81=E8=A3=85=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/statuses.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 api/repositories/statuses.py diff --git a/api/repositories/statuses.py b/api/repositories/statuses.py new file mode 100644 index 0000000..bafc337 --- /dev/null +++ b/api/repositories/statuses.py @@ -0,0 +1,23 @@ +from core.rest_client import RestClient + +class Statuses(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Statuses, self).__init__(api_root_url, **kwargs) + + def create_a_status(self,owner,repo,sha,**kwargs): + """ + https://developer.github.com/v3/repos/statuses/#create-a-status + """ + return self.post("/repos/{}/{}/statuses/{}".format(owner,repo,sha),**kwargs) + + def list_statuses_for_specific_ref(self,owner,repo,ref,**kwargs): + """ + https://developer.github.com/v3/repos/statuses/#list-statuses-for-a-specific-ref + """ + return self.get("/repos/{}/{}/commits/{}/statuses".format(owner,repo,ref),**kwargs) + + def get_combined_status_for_specific_ref(self,owner,repo,ref,**kwargs): + """ + https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref + """ + return self.get("/repos/{}/{}/commits/{}/status".format(owner,repo,ref),**kwargs) \ No newline at end of file From 1a10d9c2c86a3748e206025ffc463ccf9d22b5d6 Mon Sep 17 00:00:00 2001 From: ouyangwuhai <303423249@qq.com> Date: Thu, 25 Apr 2019 23:23:52 +0800 Subject: [PATCH 05/55] =?UTF-8?q?=E6=9B=B4=E6=96=B0statistics=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=B0=81=E8=A3=85=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/statistics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/repositories/statistics.py b/api/repositories/statistics.py index ccda15a..91d4581 100644 --- a/api/repositories/statistics.py +++ b/api/repositories/statistics.py @@ -32,4 +32,4 @@ def get_numbers_commits_hour(self,owner,repo,**kwargs): """ https://developer.github.com/v3/repos/statistics/#get-the-number-of-commits-per-hour-in-each-day """ - self.get("/repos/{}/{}/stats/punch_card".format(owner,repo),**kwargs) + return self.get("/repos/{}/{}/stats/punch_card".format(owner,repo),**kwargs) From dae65b86f204da4261c0cc6f4be995f21ff8263d Mon Sep 17 00:00:00 2001 From: Soniaxia <853539313@qq.com> Date: Sun, 5 May 2019 18:05:47 +0800 Subject: [PATCH 06/55] =?UTF-8?q?release.py=E6=96=87=E4=BB=B6=E4=B8=8B?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=B0=81=E8=A3=85=E2=80=9C=20(#272)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * release.py文件下的接口封装“ * Delete TUGithubAPI.iml * Delete misc.xml * Delete modules.xml * Delete vcs.xml * Delete workspace.xml --- api/repositories/releases.py | 82 ++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 api/repositories/releases.py diff --git a/api/repositories/releases.py b/api/repositories/releases.py new file mode 100644 index 0000000..5b63b0c --- /dev/null +++ b/api/repositories/releases.py @@ -0,0 +1,82 @@ +from core.rest_client import RestClient + + +class Releases(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Releases, self).__init__(api_root_url, **kwargs) + + + def list_releases_for_repos(self, owner, repo, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#list-releases-for-a-repository + ''' + return self.get("/repos/{}/{}/releases".format(owner, repo), **kwargs) + + + def get_single_release(self, owner, repo, release_id, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#get-a-single-release + ''' + return self.get("/repos/{}/{}/releases/{}".format(owner, repo, release_id), **kwargs) + + def get_latest_release(self, owner, repo, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#get-the-latest-release + ''' + return self.get("/repos/{}/{}/releases/latest".format(owner, repo), **kwargs) + + def get_release_by_tag_name(self, owner, repo, tag, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#get-a-release-by-tag-name + ''' + return self.get("/repos/{}/{}/releases/tags/{}".format(owner, repo, tag), **kwargs) + + def create_release(self, owner, repo, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#create-a-release + ''' + return self.post("/repos/{}/{}/releases".format(owner, repo), **kwargs) + + def edit_release(self, owner, repo, release_id, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#edit-a-release + ''' + return self.patch("/repos/{}/{}/releases/{}".format(owner, repo, release_id), **kwargs) + + def delete_release(self,owner, repo, release_id, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#delete-a-release + ''' + return self.delete("/repos/{}/{}/releases/{}".format(owner, repo, release_id), **kwargs) + + def delete_release_asset(self, owner, repo, asset_id, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#delete-a-release-asset + ''' + return self.delete("/repos/{}/{}/releases/assets/{}".format(owner, repo, asset_id), **kwargs) + + + def edit_realease_asset(self, owner, repo, asset_id, **kwargs): + ''' + + https://developer.github.com/v3/repos/releases/#edit-a-release-asset + ''' + return self.patch("/repos/{}/{}/releases/assets/{}".format(owner, repo, asset_id), **kwargs) + + def get_single_release_asset(self, owner, repo, asset_id, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#get-a-single-release-asset + ''' + return self.get("/repos/{}/{}/releases/assets/{}".format(owner, repo, asset_id), **kwargs) + + def upload_release_asset(self, upload_url, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#upload-a-release-asset + ''' + return self.post("{}".format(upload_url), **kwargs) + + def list_assets_for_release(self, owner, repo, release_id, **kwargs): + ''' + https://developer.github.com/v3/repos/releases/#list-assets-for-a-release + ''' + return self.get("/repos/{}/{}/releases/{}/assets".format(owner, repo, release_id), **kwargs) \ No newline at end of file From 7945fb73fee95b94428112fd93b5e8717ca58eb8 Mon Sep 17 00:00:00 2001 From: vlonly <32713053+vlonly@users.noreply.github.com> Date: Sun, 5 May 2019 18:08:24 +0800 Subject: [PATCH 07/55] traffic (#274) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * traffic * 新增3个接口封装 * Delete TUGithubAPI.iml * Delete misc.xml * Delete modules.xml * Delete vcs.xml * Delete workspace.xml --- api/repositories/traffic.py | 33 +++++++++++++++++++++++++++++++++ github.py | 2 ++ 2 files changed, 35 insertions(+) create mode 100644 api/repositories/traffic.py diff --git a/api/repositories/traffic.py b/api/repositories/traffic.py new file mode 100644 index 0000000..e50193b --- /dev/null +++ b/api/repositories/traffic.py @@ -0,0 +1,33 @@ +from core.rest_client import RestClient + + +class Traffic(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Traffic, self).__init__(api_root_url, **kwargs) + + def list_referrers(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/traffic/#list-referrers + """ + return self.get("/repos/{}/{}/traffic/popular/referrers".format(owner, repo), **kwargs) + + def list_paths(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/traffic/#list-paths + """ + return self.get("/repos/{}/{}/traffic/popular/paths".format(owner, repo), **kwargs) + + def list_views(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/traffic/#views + :param kwargs: day,week + """ + return self.get("/repos/{}/{}/traffic/views".format(owner, repo), **kwargs) + + def list_clones(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/traffic/#clones + :param kwargs: day,week + """ + return self.get("/repos/{}/{}/traffic/clones".format(owner, repo), **kwargs) + diff --git a/github.py b/github.py index 1454899..574d1ad 100644 --- a/github.py +++ b/github.py @@ -1,4 +1,5 @@ from api.repositories.repos import Repos +from api.repositories.traffic import Traffic from api.issues.issues import Issues @@ -7,3 +8,4 @@ def __init__(self, **kwargs): self.api_root_url = "https://api.github.com" self.repos = Repos(self.api_root_url, **kwargs) self.issues = Issues(self.api_root_url, **kwargs) + self.traffic = Traffic(self.api_root_url, **kwargs) \ No newline at end of file From ed993f38e958cd52d98795255a918bca89af4675 Mon Sep 17 00:00:00 2001 From: zhangting85 <89507288@qq.com> Date: Sun, 5 May 2019 20:42:57 +0800 Subject: [PATCH 08/55] Teach 007 (#306) * modify some class's init * modify some class's init --- api/issues/issues.py | 2 -- api/repositories/releases.py | 59 +++++++++++++++------------------- api/repositories/repos.py | 9 +++++- api/repositories/statistics.py | 24 +++++++------- api/repositories/statuses.py | 15 ++++----- api/repositories/traffic.py | 3 -- github.py | 16 +++++++-- 7 files changed, 66 insertions(+), 62 deletions(-) diff --git a/api/issues/issues.py b/api/issues/issues.py index ec24bf0..892e955 100644 --- a/api/issues/issues.py +++ b/api/issues/issues.py @@ -2,8 +2,6 @@ class Issues(RestClient): - def __init__(self, api_root_url, **kwargs): - super(Issues, self).__init__(api_root_url, **kwargs) def create_issue(self, owner, repo, **kwargs): """ diff --git a/api/repositories/releases.py b/api/repositories/releases.py index 5b63b0c..f678b79 100644 --- a/api/repositories/releases.py +++ b/api/repositories/releases.py @@ -2,81 +2,74 @@ class Releases(RestClient): - def __init__(self, api_root_url, **kwargs): - super(Releases, self).__init__(api_root_url, **kwargs) - - def list_releases_for_repos(self, owner, repo, **kwargs): - ''' + """ https://developer.github.com/v3/repos/releases/#list-releases-for-a-repository - ''' + """ return self.get("/repos/{}/{}/releases".format(owner, repo), **kwargs) - def get_single_release(self, owner, repo, release_id, **kwargs): - ''' + """ https://developer.github.com/v3/repos/releases/#get-a-single-release - ''' + """ return self.get("/repos/{}/{}/releases/{}".format(owner, repo, release_id), **kwargs) def get_latest_release(self, owner, repo, **kwargs): - ''' + """ https://developer.github.com/v3/repos/releases/#get-the-latest-release - ''' + """ return self.get("/repos/{}/{}/releases/latest".format(owner, repo), **kwargs) def get_release_by_tag_name(self, owner, repo, tag, **kwargs): - ''' + """ https://developer.github.com/v3/repos/releases/#get-a-release-by-tag-name - ''' + """ return self.get("/repos/{}/{}/releases/tags/{}".format(owner, repo, tag), **kwargs) def create_release(self, owner, repo, **kwargs): - ''' + """ https://developer.github.com/v3/repos/releases/#create-a-release - ''' + """ return self.post("/repos/{}/{}/releases".format(owner, repo), **kwargs) def edit_release(self, owner, repo, release_id, **kwargs): - ''' + """ https://developer.github.com/v3/repos/releases/#edit-a-release - ''' + """ return self.patch("/repos/{}/{}/releases/{}".format(owner, repo, release_id), **kwargs) - def delete_release(self,owner, repo, release_id, **kwargs): - ''' + def delete_release(self, owner, repo, release_id, **kwargs): + """ https://developer.github.com/v3/repos/releases/#delete-a-release - ''' + """ return self.delete("/repos/{}/{}/releases/{}".format(owner, repo, release_id), **kwargs) def delete_release_asset(self, owner, repo, asset_id, **kwargs): - ''' + """ https://developer.github.com/v3/repos/releases/#delete-a-release-asset - ''' + """ return self.delete("/repos/{}/{}/releases/assets/{}".format(owner, repo, asset_id), **kwargs) - def edit_realease_asset(self, owner, repo, asset_id, **kwargs): - ''' - + """ https://developer.github.com/v3/repos/releases/#edit-a-release-asset - ''' + """ return self.patch("/repos/{}/{}/releases/assets/{}".format(owner, repo, asset_id), **kwargs) def get_single_release_asset(self, owner, repo, asset_id, **kwargs): - ''' + """ https://developer.github.com/v3/repos/releases/#get-a-single-release-asset - ''' + """ return self.get("/repos/{}/{}/releases/assets/{}".format(owner, repo, asset_id), **kwargs) def upload_release_asset(self, upload_url, **kwargs): - ''' + """ https://developer.github.com/v3/repos/releases/#upload-a-release-asset - ''' + """ return self.post("{}".format(upload_url), **kwargs) def list_assets_for_release(self, owner, repo, release_id, **kwargs): - ''' + """ https://developer.github.com/v3/repos/releases/#list-assets-for-a-release - ''' - return self.get("/repos/{}/{}/releases/{}/assets".format(owner, repo, release_id), **kwargs) \ No newline at end of file + """ + return self.get("/repos/{}/{}/releases/{}/assets".format(owner, repo, release_id), **kwargs) diff --git a/api/repositories/repos.py b/api/repositories/repos.py index 68c1dc0..7ba3e5c 100644 --- a/api/repositories/repos.py +++ b/api/repositories/repos.py @@ -1,9 +1,16 @@ from core.rest_client import RestClient - +from api.repositories.releases import Releases +from api.repositories.traffic import Traffic +from api.repositories.statistics import Statistics +from api.repositories.statuses import Statuses class Repos(RestClient): def __init__(self, api_root_url, **kwargs): super(Repos, self).__init__(api_root_url, **kwargs) + self.releases = Releases(self.api_root_url, **kwargs) + self.traffic = Traffic(self.api_root_url, **kwargs) + self.statistics = Statistics(self.api_root_url, **kwargs) + self.statuses = Statuses(self.api_root_url, **kwargs) def list_your_repos(self, **kwargs): """ diff --git a/api/repositories/statistics.py b/api/repositories/statistics.py index 91d4581..f84196d 100644 --- a/api/repositories/statistics.py +++ b/api/repositories/statistics.py @@ -1,35 +1,33 @@ from core.rest_client import RestClient -class Statistics(RestClient): - def __init__(self, api_root_url, **kwargs): - super(Statistics, self).__init__(api_root_url, **kwargs) - def get_contributors_list(self,owner,repo,**kwargs): +class Statistics(RestClient): + def get_contributors_list(self, owner, repo, **kwargs): """ https://developer.github.com/v3/repos/statistics/#get-contributors-list-with-additions-deletions-and-commit-counts """ - return self.get("/repos/{}/{}/stats/contributors".format(owner,repo),**kwargs) + return self.get("/repos/{}/{}/stats/contributors".format(owner, repo), **kwargs) - def get_last_year_commit(self,owner,repo,**kwargs): + def get_last_year_commit(self, owner, repo, **kwargs): """ https://developer.github.com/v3/repos/statistics/#get-the-last-year-of-commit-activity-data """ - return self.get("/repos/{}/{}/stats/commit_activity".format(owner,repo),**kwargs) + return self.get("/repos/{}/{}/stats/commit_activity".format(owner, repo), **kwargs) - def get_number_of_additions_deletions(self,owner,repo,**kwargs): + def get_number_of_additions_deletions(self, owner, repo, **kwargs): """ https://developer.github.com/v3/repos/statistics/#get-the-number-of-additions-and-deletions-per-week """ - return self.get("/repos/{}/{}/stats/code_frequency".format(owner,repo),**kwargs) + return self.get("/repos/{}/{}/stats/code_frequency".format(owner, repo), **kwargs) - def get_weekly_commit_count(self,owner,repo,**kwargs): + def get_weekly_commit_count(self, owner, repo, **kwargs): """ https://developer.github.com/v3/repos/statistics/#get-the-weekly-commit-count-for-the-repository-owner-and-everyone-else """ - return self.get("/repos/{}/{}/stats/participation".format(owner,repo),**kwargs) + return self.get("/repos/{}/{}/stats/participation".format(owner, repo), **kwargs) - def get_numbers_commits_hour(self,owner,repo,**kwargs): + def get_numbers_commits_hour(self, owner, repo, **kwargs): """ https://developer.github.com/v3/repos/statistics/#get-the-number-of-commits-per-hour-in-each-day """ - return self.get("/repos/{}/{}/stats/punch_card".format(owner,repo),**kwargs) + return self.get("/repos/{}/{}/stats/punch_card".format(owner, repo), **kwargs) diff --git a/api/repositories/statuses.py b/api/repositories/statuses.py index bafc337..a197b91 100644 --- a/api/repositories/statuses.py +++ b/api/repositories/statuses.py @@ -1,23 +1,22 @@ from core.rest_client import RestClient + class Statuses(RestClient): - def __init__(self, api_root_url, **kwargs): - super(Statuses, self).__init__(api_root_url, **kwargs) - def create_a_status(self,owner,repo,sha,**kwargs): + def create_a_status(self, owner, repo, sha, **kwargs): """ https://developer.github.com/v3/repos/statuses/#create-a-status """ - return self.post("/repos/{}/{}/statuses/{}".format(owner,repo,sha),**kwargs) + return self.post("/repos/{}/{}/statuses/{}".format(owner, repo, sha), **kwargs) - def list_statuses_for_specific_ref(self,owner,repo,ref,**kwargs): + def list_statuses_for_specific_ref(self, owner, repo, ref, **kwargs): """ https://developer.github.com/v3/repos/statuses/#list-statuses-for-a-specific-ref """ - return self.get("/repos/{}/{}/commits/{}/statuses".format(owner,repo,ref),**kwargs) + return self.get("/repos/{}/{}/commits/{}/statuses".format(owner, repo, ref), **kwargs) - def get_combined_status_for_specific_ref(self,owner,repo,ref,**kwargs): + def get_combined_status_for_specific_ref(self, owner, repo, ref, **kwargs): """ https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref """ - return self.get("/repos/{}/{}/commits/{}/status".format(owner,repo,ref),**kwargs) \ No newline at end of file + return self.get("/repos/{}/{}/commits/{}/status".format(owner, repo, ref), **kwargs) diff --git a/api/repositories/traffic.py b/api/repositories/traffic.py index e50193b..3943c39 100644 --- a/api/repositories/traffic.py +++ b/api/repositories/traffic.py @@ -2,8 +2,6 @@ class Traffic(RestClient): - def __init__(self, api_root_url, **kwargs): - super(Traffic, self).__init__(api_root_url, **kwargs) def list_referrers(self, owner, repo, **kwargs): """ @@ -30,4 +28,3 @@ def list_clones(self, owner, repo, **kwargs): :param kwargs: day,week """ return self.get("/repos/{}/{}/traffic/clones".format(owner, repo), **kwargs) - diff --git a/github.py b/github.py index 574d1ad..756a8e9 100644 --- a/github.py +++ b/github.py @@ -1,5 +1,4 @@ from api.repositories.repos import Repos -from api.repositories.traffic import Traffic from api.issues.issues import Issues @@ -8,4 +7,17 @@ def __init__(self, **kwargs): self.api_root_url = "https://api.github.com" self.repos = Repos(self.api_root_url, **kwargs) self.issues = Issues(self.api_root_url, **kwargs) - self.traffic = Traffic(self.api_root_url, **kwargs) \ No newline at end of file + +if __name__ == '__main__': + r = Github(token="xxxx") + username = "zhangting85" + orgname = "TestUpCommunity" + reponame ="simpleWebtest" + # case 1 + x = r.repos.get_repo(username, reponame) + print(x.status_code) + assert x.status_code == 200 + print(x.text) + x = r.repos.traffic.list_clones(username, reponame) + assert x.status_code == 200 + print(x.text) From d0cc63f01374b30bf34bebde57965d2c2ab57a23 Mon Sep 17 00:00:00 2001 From: qinfei55 <46213959+qinfei55@users.noreply.github.com> Date: Wed, 15 May 2019 07:44:19 +0800 Subject: [PATCH 09/55] =?UTF-8?q?Feature=20qinfei55-2019-5-10=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E6=AC=A1=E8=AF=84=E5=AE=A1=E5=BE=85=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E3=80=82=20(#311)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * finish list_hooks * modified after reviewed * reset github.py * add a new line in github.py * delete _init_.py --- api/repositories/hooks.py | 9 +++++++++ api/repositories/repos.py | 2 ++ 2 files changed, 11 insertions(+) create mode 100644 api/repositories/hooks.py diff --git a/api/repositories/hooks.py b/api/repositories/hooks.py new file mode 100644 index 0000000..2d731e0 --- /dev/null +++ b/api/repositories/hooks.py @@ -0,0 +1,9 @@ +from core.rest_client import RestClient + + +class Hooks(RestClient): + def list_hooks(self,owner,repo, **kwargs): + """ + https://developer.github.com/v3/repos/hooks#list-hooks + """ + return self.get("/repos/{}/{}/hooks".format(owner, repo), **kwargs) \ No newline at end of file diff --git a/api/repositories/repos.py b/api/repositories/repos.py index 7ba3e5c..7099830 100644 --- a/api/repositories/repos.py +++ b/api/repositories/repos.py @@ -3,6 +3,7 @@ from api.repositories.traffic import Traffic from api.repositories.statistics import Statistics from api.repositories.statuses import Statuses +from api.repositories.hooks import Hooks class Repos(RestClient): def __init__(self, api_root_url, **kwargs): @@ -11,6 +12,7 @@ def __init__(self, api_root_url, **kwargs): self.traffic = Traffic(self.api_root_url, **kwargs) self.statistics = Statistics(self.api_root_url, **kwargs) self.statuses = Statuses(self.api_root_url, **kwargs) + self.hooks = Hooks(self.api_root_url, **kwargs) def list_your_repos(self, **kwargs): """ From 07a7d27fbde1fc0f507dafc1713da354f48e4c26 Mon Sep 17 00:00:00 2001 From: NancyHui <37395066+NancyHui@users.noreply.github.com> Date: Wed, 15 May 2019 07:57:59 +0800 Subject: [PATCH 10/55] branches.py (#307) --- api/repositories/branches.py | 223 +++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 api/repositories/branches.py diff --git a/api/repositories/branches.py b/api/repositories/branches.py new file mode 100644 index 0000000..c468560 --- /dev/null +++ b/api/repositories/branches.py @@ -0,0 +1,223 @@ +from core.rest_client import RestClient + + +class Branches(RestClient): + + # 135 + def list_branches(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#list-branches + """ + return self.get('/repos/{}/{}/branches'.format(owner, repo), **kwargs) + + # 136 + def get_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#get-branch + """ + return self.get('/repos/{}/{}/branches/{}'.format(owner, repo, branch), **kwargs) + + # 137 + def get_branch_protection(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#get-branch-protection + """ + return self.get('/repos/{}/{}/branches/{}/protection'.format(owner, repo, branch), **kwargs) + + # 138 + def update_branch_protection(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#update-branch-protection + """ + return self.put('/repos/{}/{}/branches/{}/protection'.format(owner, repo, branch), **kwargs) + + # 139 + def remove_branch_protection(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#remove-branch-protection + """ + return self.delete('/repos/{}/{}/branches/{}/protection'.format(owner, repo, branch), **kwargs) + + # 140 + def get_required_status_checks_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#get-required-status-checks-of-protected-branch + """ + return self.get('/repos/{}/{}/branches/{}/protection/required_status_checks'.format(owner, repo, branch), **kwargs) + + # 141 + def update_required_status_checks_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#update-required-status-checks-of-protected-branch + """ + return self.patch('/repos/{}/{}/branches/{}/protection/required_status_checks'.format(owner, repo, branch), **kwargs) + + # 142 + def remove_required_status_checks_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#remove-required-status-checks-of-protected-branch + """ + return self.delete('/repos/{}/{}/branches/{}/protection/required_status_checks'.format(owner, repo, branch), **kwargs) + + # 143 + def list_required_status_checks_contexts_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#list-required-status-checks-contexts-of-protected-branch + """ + return self.get('/repos/{}/{}/branches/{}/protection/required_status_checks/contexts'.format(owner, repo, branch), **kwargs) + + # 144 + def replace_required_status_checks_contexts_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#replace-required-status-checks-contexts-of-protected-branch + """ + return self.put('/repos/{}/{}/branches/{}/protection/required_status_checks/contexts'.format(owner, repo, branch), **kwargs) + + # 145 + def add_required_status_checks_contexts_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#add-required-status-checks-contexts-of-protected-branch + """ + return self.post('/repos/{}/{}/branches/{}/protection/required_status_checks/contexts'.format(owner, repo, branch), **kwargs) + + # 146 + def remove_required_status_checks_contexts_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#remove-required-status-checks-contexts-of-protected-branch + """ + return self.delete('/repos/{}/{}/branches/{}/protection/required_status_checks/contexts'.format(owner, repo, branch), **kwargs) + + # 147 + def get_pull_request_review_enforcement_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#get-pull-request-review-enforcement-of-protected-branch + """ + return self.get('/repos/{}/{}/branches/{}/protection/required_pull_request_reviews'.format(owner, repo, branch), **kwargs) + + # 148 + def update_pull_request_review_enforcement_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#update-pull-request-review-enforcement-of-protected-branch + """ + return self.patch('/repos/{}/{}/branches/{}/protection/required_pull_request_reviews'.format(owner, repo, branch), **kwargs) + + # 149 + def remove_pull_request_review_enforcement_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#remove-pull-request-review-enforcement-of-protected-branch + """ + return self.delete('/repos/{}/{}/branches/{}/protection/required_pull_request_reviews'.format(owner, repo, branch), **kwargs) + + # 150 + def get_required_signatures_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#get-required-signatures-of-protected-branch + """ + return self.get('/repos/{}/{}/branches/{}/protection/required_signatures'.format(owner, repo, branch), **kwargs) + + # 151 + def add_required_signatures_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#add-required-signatures-of-protected-branch + """ + return self.post('/repos/{}/{}/branches/{}/protection/required_signatures'.format(owner, repo, branch), + **kwargs) + + # 152 + def remove_required_signatures_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#remove-required-signatures-of-protected-branch + """ + return self.delete('/repos/{}/{}/branches/{}/protection/required_signatures'.format(owner, repo, branch), **kwargs) + + # 153 + def get_admin_enforcement_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#get-admin-enforcement-of-protected-branch + """ + return self.get('/repos/{}/{}/branches/{}/protection/enforce_admins'.format(owner, repo, branch), **kwargs) + + # 154 + def add_admin_enforcement_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#add-admin-enforcement-of-protected-branch + """ + return self.post('/repos/{}/{}/branches/{}/protection/enforce_admins'.format(owner, repo, branch), **kwargs) + + # 155 + def remove_admin_enforcement_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#remove-admin-enforcement-of-protected-branch + """ + return self.delete('/repos/{}/{}/branches/{}/protection/enforce_admins'.format(owner, repo, branch), **kwargs) + + # 156 + def get_restrictions_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#get-restrictions-of-protected-branch + """ + return self.get('/repos/{}/{}/branches/{}/protection/restrictions'.format(owner, repo, branch), **kwargs) + + # 157 + def remove_restrictions_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#remove-restrictions-of-protected-branch + """ + return self.delete('/repos/{}/{}/branches/{}/protection/restrictions'.format(owner, repo, branch), **kwargs) + + # 158 + def list_team_restrictions_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#list-team-restrictions-of-protected-branch + """ + return self.get('/repos/{}/{}/branches/{}/protection/restrictions/teams'.format(owner, repo, branch), **kwargs) + + # 159 + def replace_team_restrictions_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#replace-team-restrictions-of-protected-branch + """ + return self.put('/repos/{}/{}/branches/{}/protection/restrictions/teams'.format(owner, repo, branch), **kwargs) + + # 160 + def add_team_restrictions_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#add-team-restrictions-of-protected-branch + """ + return self.post('/repos/{}/{}/branches/{}/protection/restrictions/teams'.format(owner, repo, branch), **kwargs) + + # 161 + def remove_team_restrictions_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#remove-team-restrictions-of-protected-branch + """ + return self.delete('/repos/{}/{}/branches/{}/protection/restrictions/teams'.format(owner, repo, branch), **kwargs) + + # 162 + def list_user_restrictions_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#list-user-restrictions-of-protected-branch + """ + return self.get('/repos/{}/{}/branches/{}/protection/restrictions/users'.format(owner, repo, branch), **kwargs) + + # 163 + def replace_user_restrictions_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#replace-user-restrictions-of-protected-branch + """ + return self.put('/repos/{}/{}/branches/{}/protection/restrictions/users'.format(owner, repo, branch), **kwargs) + + # 164 + def add_user_restrictions_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#add-user-restrictions-of-protected-branch + """ + return self.post('/repos/{}/{}/branches/{}/protection/restrictions/users'.format(owner, repo, branch), **kwargs) + + # 165 + def remove_user_restrictions_of_protected_branch(self, owner, repo, branch, **kwargs): + """ + https://developer.github.com/v3/repos/branches/#remove-user-restrictions-of-protected-branch + + """ + return self.delete('/repos/{}/{}/branches/{}/protection/restrictions/users'.format(owner, repo, branch), **kwargs) From a2581d7c0baecf72795c6c51b55228f2060a5245 Mon Sep 17 00:00:00 2001 From: liuxingchen <41198927+bgfNGl35QpGme9mpx0f4b8yE3S@users.noreply.github.com> Date: Wed, 15 May 2019 08:02:20 +0800 Subject: [PATCH 11/55] =?UTF-8?q?=E6=9B=B4=E6=96=B0hooks=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=B0=81=E8=A3=85=E6=96=87=E4=BB=B6-2019-5-10=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E6=AC=A1=E8=AF=84=E5=AE=A1=E5=BE=85=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E3=80=82=20(#310)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 更新hooks接口封装文件 * 更新hooks接口文件 --- api/repositories/hooks.py | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/api/repositories/hooks.py b/api/repositories/hooks.py index 2d731e0..b5c7e44 100644 --- a/api/repositories/hooks.py +++ b/api/repositories/hooks.py @@ -2,8 +2,39 @@ class Hooks(RestClient): + + def create_a_hook(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/hooks/#create-a-hook + """ + return self.post("/repos/{}/{}/hooks".format(owner, repo), **kwargs) + + def edit_a_hook(self, owner,repo, hook_id, **kwargs): + """ + https://developer.github.com/v3/repos/hooks/#edit-a-hook + """ + return self.patch("/repos/{}/{}/hooks/{}".format(owner, repo, hook_id), **kwargs) + + def delete_a_hook(self, owner, repo, hook_id): + """ + https://developer.github.com/v3/repos/hooks/#delete-a-hook + """ + return self.delete_a_hook("/repos/{}/{}/hooks/{}".format(owner, repo, hook_id)) + + def test_a_push_hook(self, owner, repo, hook_id): + """ + https://developer.github.com/v3/repos/hooks/#test-a-push-hook + """ + return self.post(("/repos/{}/{}/hooks/{}/test".format(owner, repo, hook_id))) + + def ping_a_hook(self, owner, repo, hook_id): + """ + https://developer.github.com/v3/repos/hooks/#ping-a-hook + """ + return self.post(("/repos/{}/{}/hooks/{}/pings".format(owner, repo, hook_id))) + def list_hooks(self,owner,repo, **kwargs): """ https://developer.github.com/v3/repos/hooks#list-hooks """ - return self.get("/repos/{}/{}/hooks".format(owner, repo), **kwargs) \ No newline at end of file + return self.get("/repos/{}/{}/hooks".format(owner, repo), **kwargs) From d3c537dc2cbc303221cf208759922d67c3ab1f5a Mon Sep 17 00:00:00 2001 From: zhangting <89507288@qq.com> Date: Wed, 15 May 2019 08:17:49 +0800 Subject: [PATCH 12/55] add --- api/repositories/repos.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/repositories/repos.py b/api/repositories/repos.py index 7099830..daad58c 100644 --- a/api/repositories/repos.py +++ b/api/repositories/repos.py @@ -4,6 +4,7 @@ from api.repositories.statistics import Statistics from api.repositories.statuses import Statuses from api.repositories.hooks import Hooks +from api.repositories.branches import Branches class Repos(RestClient): def __init__(self, api_root_url, **kwargs): @@ -13,6 +14,7 @@ def __init__(self, api_root_url, **kwargs): self.statistics = Statistics(self.api_root_url, **kwargs) self.statuses = Statuses(self.api_root_url, **kwargs) self.hooks = Hooks(self.api_root_url, **kwargs) + self.branches = Branches(self.api_root_url, **kwargs) def list_your_repos(self, **kwargs): """ From dec226b1cf925491a0aee9845867081e0d2825aa Mon Sep 17 00:00:00 2001 From: vlonly Date: Fri, 17 May 2019 13:53:19 +0800 Subject: [PATCH 13/55] #191-#195 --- api/repositories/keys.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 api/repositories/keys.py diff --git a/api/repositories/keys.py b/api/repositories/keys.py new file mode 100644 index 0000000..3aee6b0 --- /dev/null +++ b/api/repositories/keys.py @@ -0,0 +1,35 @@ +from core.rest_client import RestClient + + +class Keys(RestClient): + + def List_deploy_keys(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/keys#list-deploy-keys + """ + return self.get('/repos/{}/{}/keys'.format(owner, repo), **kwargs) + + def Get_deploy_key(self, owner, repo, key_id, **kwargs): + """ + https://developer.github.com/v3/repos/keys#get-a-deploy-key + :return: + """ + return self.get('/repos/{}/{}/keys/{}'.format(owner, repo, key_id), **kwargs) + + def Add_deploy_key(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/keys#get-a-deploy-key + """ + return self.post('/repos/{}/{}/keys'.format(owner, repo), **kwargs) + + def Edit_deploy_key(self): + """ + https://developer.github.com/v3/repos/keys/#remove-a-deploy-key + """ + print('Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead.') + + def Remove_deploy_key(self, owner, repo, key_id, **kwargs): + """ + https://developer.github.com/v3/repos/keys#remove-a-deploy-key + """ + return self.delete('/repos/{}/{}/keys/{}'.format(owner, repo, key_id), **kwargs) From 6802a7d05e54b5b70db6b2628a1e2ee5b0ff31dd Mon Sep 17 00:00:00 2001 From: vlonly Date: Fri, 17 May 2019 14:12:33 +0800 Subject: [PATCH 14/55] #206,#207 --- api/repositories/forks.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 api/repositories/forks.py diff --git a/api/repositories/forks.py b/api/repositories/forks.py new file mode 100644 index 0000000..e1dbb55 --- /dev/null +++ b/api/repositories/forks.py @@ -0,0 +1,15 @@ +from core.rest_client import RestClient + +class Forks(RestClient): + + def List_forks(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/forks#list-forks + """ + return self.get('/repos/{}/{}/forks'.format(owner, repo), **kwargs) + + def Create_a_fork(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/forks/#create-a-fork + """ + return self.post('/repos/{}/{}/forks'.format(owner, repo), **kwargs) \ No newline at end of file From fc5de88dfa43cb86854e0f86ce52e2f0d4de2a1d Mon Sep 17 00:00:00 2001 From: vlonly Date: Fri, 17 May 2019 14:33:23 +0800 Subject: [PATCH 15/55] #225 --- api/repositories/merging.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 api/repositories/merging.py diff --git a/api/repositories/merging.py b/api/repositories/merging.py new file mode 100644 index 0000000..2c1d290 --- /dev/null +++ b/api/repositories/merging.py @@ -0,0 +1,10 @@ +from core.rest_client import RestClient + + +class Merging(RestClient): + + def Perform_a_merge(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/merging/#perform-a-merge + """ + return self.post('/repos/{}/{}/merges'.format(owner, repo), **kwargs) \ No newline at end of file From 72b722f787d94cff4967b08977c093e89739c430 Mon Sep 17 00:00:00 2001 From: vlonly <32713053+vlonly@users.noreply.github.com> Date: Sun, 26 May 2019 18:47:47 +0800 Subject: [PATCH 16/55] Feature vl (#346) * #191-#195 * #206,#207 * #225 --- api/repositories/forks.py | 15 +++++++++++++++ api/repositories/keys.py | 35 +++++++++++++++++++++++++++++++++++ api/repositories/merging.py | 10 ++++++++++ 3 files changed, 60 insertions(+) create mode 100644 api/repositories/forks.py create mode 100644 api/repositories/keys.py create mode 100644 api/repositories/merging.py diff --git a/api/repositories/forks.py b/api/repositories/forks.py new file mode 100644 index 0000000..e1dbb55 --- /dev/null +++ b/api/repositories/forks.py @@ -0,0 +1,15 @@ +from core.rest_client import RestClient + +class Forks(RestClient): + + def List_forks(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/forks#list-forks + """ + return self.get('/repos/{}/{}/forks'.format(owner, repo), **kwargs) + + def Create_a_fork(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/forks/#create-a-fork + """ + return self.post('/repos/{}/{}/forks'.format(owner, repo), **kwargs) \ No newline at end of file diff --git a/api/repositories/keys.py b/api/repositories/keys.py new file mode 100644 index 0000000..3aee6b0 --- /dev/null +++ b/api/repositories/keys.py @@ -0,0 +1,35 @@ +from core.rest_client import RestClient + + +class Keys(RestClient): + + def List_deploy_keys(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/keys#list-deploy-keys + """ + return self.get('/repos/{}/{}/keys'.format(owner, repo), **kwargs) + + def Get_deploy_key(self, owner, repo, key_id, **kwargs): + """ + https://developer.github.com/v3/repos/keys#get-a-deploy-key + :return: + """ + return self.get('/repos/{}/{}/keys/{}'.format(owner, repo, key_id), **kwargs) + + def Add_deploy_key(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/keys#get-a-deploy-key + """ + return self.post('/repos/{}/{}/keys'.format(owner, repo), **kwargs) + + def Edit_deploy_key(self): + """ + https://developer.github.com/v3/repos/keys/#remove-a-deploy-key + """ + print('Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead.') + + def Remove_deploy_key(self, owner, repo, key_id, **kwargs): + """ + https://developer.github.com/v3/repos/keys#remove-a-deploy-key + """ + return self.delete('/repos/{}/{}/keys/{}'.format(owner, repo, key_id), **kwargs) diff --git a/api/repositories/merging.py b/api/repositories/merging.py new file mode 100644 index 0000000..2c1d290 --- /dev/null +++ b/api/repositories/merging.py @@ -0,0 +1,10 @@ +from core.rest_client import RestClient + + +class Merging(RestClient): + + def Perform_a_merge(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/merging/#perform-a-merge + """ + return self.post('/repos/{}/{}/merges'.format(owner, repo), **kwargs) \ No newline at end of file From 15372cab09e30d093f5780be70d358eddfdf5b64 Mon Sep 17 00:00:00 2001 From: xiechunwei <45328359+xiaoxieaichirou@users.noreply.github.com> Date: Sun, 26 May 2019 18:49:08 +0800 Subject: [PATCH 17/55] new file: teams.py (#345) --- teams.py | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 teams.py diff --git a/teams.py b/teams.py new file mode 100644 index 0000000..8be7620 --- /dev/null +++ b/teams.py @@ -0,0 +1,102 @@ +from core.rest_client import RestClient + +class Teams(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Teams, self).__init__(api_root_url, **kwargs) + + def list_teams(self, org, **kwargs): + ''' + https://developer.github.com/v3/teams#list-teams + ''' + return self.get('/orgs/{}/teams'.format(org), **kwargs) + + def get_teams(self, team_id, **kwargs): + ''' + https://developer.github.com/v3/teams/#get-team + ''' + return self.get('/teams/{}'.format(team_id), **kwargs) + + def get_team_by_name(self, org, team_slug, **kwargs): + ''' + https://developer.github.com/v3/teams#get-team-by-name + ''' + return self.get('/orgs/{}/teams/{}'.format(org, team_slug), **kwargs) + + def create_team(self, org, **kwargs): + ''' + https://developer.github.com/v3/teams#create-team + ''' + return self.post('/orgs/{}/teams'.format(org), **kwargs) + + def edit_team(self, tram_id, **kwargs): + ''' + https://developer.github.com/v3/teams/#edit-team + ''' + return self.patch('/teams/{}'.format(tram_id), **kwargs) + + def delete_team(self, tram_id, **kwargs): + ''' + https://developer.github.com/v3/teams/#edit-team + ''' + return self.delete('/teams/{}'.format(tram_id), **kwargs) + + def list_child_teams(self, team_id, **kwargs): + ''' + https://developer.github.com/v3/teams#list-child-teams + ''' + return self.get('/teams/{}/teams'.format(team_id), **kwargs) + + def list_team_repos(self, team_id, **kwargs): + ''' + https://developer.github.com/v3/teams#list-team-repos + ''' + return self.get('/teams/{}/repos'.format(team_id), **kwargs) + + def check_manages_repository(self, team_id, owner, repo, **kwargs): + ''' + https://developer.github.com/v3/teams#check-if-a-team-manages-a-repository + ''' + return self.get('/teams/{}/repos/{}/{}'.format(team_id, owner, repo), **kwargs) + + def add_update_repository(self, team_id, owner, repo, **kwargs): + ''' + https://developer.github.com/v3/teams#add-or-update-team-repository + ''' + return self.put('/teams/{}/repos/{}/{}'.format(team_id, owner, repo), **kwargs) + + def remove_team_repository(self, team_id, owner, repo, **kwargs): + ''' + https://developer.github.com/v3/teams#remove-team-repository + ''' + return self.delete('/trams/{}/repos/{}/{}'.format(team_id, owner, repo), **kwargs) + + def list_user_teams(self, **kwargs): + ''' + https://developer.github.com/v3/teams#list-user-teams + ''' + return self.get('/user/teams', **kwargs) + + def list_team_projects(self, team_id, **kwargs): + ''' + https://developer.github.com/v3/teams/#list-team-projects + ''' + return self.get('/teams/{}/projects'.format(team_id), **kwargs) + + def review_team_project(self, team_id, project_id, **kwargs): + ''' + https://developer.github.com/v3/teams#review-a-team-project + ''' + return self.get('/teams/{}/projects/{}'.format(team_id, project_id), **kwargs) + + def add_update_team_project(self, team_id, project_id, **kwargs): + ''' + https://developer.github.com/v3/teams#add-or-update-team-project + ''' + return self.put('/teams/{}/projects/{}'.format(team_id, project_id), **kwargs) + + def teams_remove_project(self, team_id, project_id, **kwargs): + ''' + https://developer.github.com/v3/teams#remove-team-project + ''' + return self.delete('/teams/{}/projects/{}'.format(team_id, project_id), **kwargs) + From c0f585ff0d872c391af0c41fad6fb071fc4dc1df Mon Sep 17 00:00:00 2001 From: zhangting85 <89507288@qq.com> Date: Sun, 26 May 2019 18:51:09 +0800 Subject: [PATCH 18/55] Revert " new file: teams.py (#345)" (#358) This reverts commit 15372cab09e30d093f5780be70d358eddfdf5b64. --- teams.py | 102 ------------------------------------------------------- 1 file changed, 102 deletions(-) delete mode 100644 teams.py diff --git a/teams.py b/teams.py deleted file mode 100644 index 8be7620..0000000 --- a/teams.py +++ /dev/null @@ -1,102 +0,0 @@ -from core.rest_client import RestClient - -class Teams(RestClient): - def __init__(self, api_root_url, **kwargs): - super(Teams, self).__init__(api_root_url, **kwargs) - - def list_teams(self, org, **kwargs): - ''' - https://developer.github.com/v3/teams#list-teams - ''' - return self.get('/orgs/{}/teams'.format(org), **kwargs) - - def get_teams(self, team_id, **kwargs): - ''' - https://developer.github.com/v3/teams/#get-team - ''' - return self.get('/teams/{}'.format(team_id), **kwargs) - - def get_team_by_name(self, org, team_slug, **kwargs): - ''' - https://developer.github.com/v3/teams#get-team-by-name - ''' - return self.get('/orgs/{}/teams/{}'.format(org, team_slug), **kwargs) - - def create_team(self, org, **kwargs): - ''' - https://developer.github.com/v3/teams#create-team - ''' - return self.post('/orgs/{}/teams'.format(org), **kwargs) - - def edit_team(self, tram_id, **kwargs): - ''' - https://developer.github.com/v3/teams/#edit-team - ''' - return self.patch('/teams/{}'.format(tram_id), **kwargs) - - def delete_team(self, tram_id, **kwargs): - ''' - https://developer.github.com/v3/teams/#edit-team - ''' - return self.delete('/teams/{}'.format(tram_id), **kwargs) - - def list_child_teams(self, team_id, **kwargs): - ''' - https://developer.github.com/v3/teams#list-child-teams - ''' - return self.get('/teams/{}/teams'.format(team_id), **kwargs) - - def list_team_repos(self, team_id, **kwargs): - ''' - https://developer.github.com/v3/teams#list-team-repos - ''' - return self.get('/teams/{}/repos'.format(team_id), **kwargs) - - def check_manages_repository(self, team_id, owner, repo, **kwargs): - ''' - https://developer.github.com/v3/teams#check-if-a-team-manages-a-repository - ''' - return self.get('/teams/{}/repos/{}/{}'.format(team_id, owner, repo), **kwargs) - - def add_update_repository(self, team_id, owner, repo, **kwargs): - ''' - https://developer.github.com/v3/teams#add-or-update-team-repository - ''' - return self.put('/teams/{}/repos/{}/{}'.format(team_id, owner, repo), **kwargs) - - def remove_team_repository(self, team_id, owner, repo, **kwargs): - ''' - https://developer.github.com/v3/teams#remove-team-repository - ''' - return self.delete('/trams/{}/repos/{}/{}'.format(team_id, owner, repo), **kwargs) - - def list_user_teams(self, **kwargs): - ''' - https://developer.github.com/v3/teams#list-user-teams - ''' - return self.get('/user/teams', **kwargs) - - def list_team_projects(self, team_id, **kwargs): - ''' - https://developer.github.com/v3/teams/#list-team-projects - ''' - return self.get('/teams/{}/projects'.format(team_id), **kwargs) - - def review_team_project(self, team_id, project_id, **kwargs): - ''' - https://developer.github.com/v3/teams#review-a-team-project - ''' - return self.get('/teams/{}/projects/{}'.format(team_id, project_id), **kwargs) - - def add_update_team_project(self, team_id, project_id, **kwargs): - ''' - https://developer.github.com/v3/teams#add-or-update-team-project - ''' - return self.put('/teams/{}/projects/{}'.format(team_id, project_id), **kwargs) - - def teams_remove_project(self, team_id, project_id, **kwargs): - ''' - https://developer.github.com/v3/teams#remove-team-project - ''' - return self.delete('/teams/{}/projects/{}'.format(team_id, project_id), **kwargs) - From ba7502081a589697aff4486c549892619672a92e Mon Sep 17 00:00:00 2001 From: zhangting85 <89507288@qq.com> Date: Sun, 26 May 2019 20:57:08 +0800 Subject: [PATCH 19/55] Teach 008 (#359) * add operations for create repo * fix bug * fix bug * fix bug --- core/base.py | 2 ++ github.py | 14 -------------- operations/__init__.py | 0 operations/repo.py | 39 +++++++++++++++++++++++++++++++++++++++ scripts/debug.py | 13 +++++++++++++ 5 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 core/base.py create mode 100644 operations/__init__.py create mode 100644 operations/repo.py create mode 100644 scripts/debug.py diff --git a/core/base.py b/core/base.py new file mode 100644 index 0000000..109bede --- /dev/null +++ b/core/base.py @@ -0,0 +1,2 @@ +class CommonItem(): + pass \ No newline at end of file diff --git a/github.py b/github.py index 756a8e9..1454899 100644 --- a/github.py +++ b/github.py @@ -7,17 +7,3 @@ def __init__(self, **kwargs): self.api_root_url = "https://api.github.com" self.repos = Repos(self.api_root_url, **kwargs) self.issues = Issues(self.api_root_url, **kwargs) - -if __name__ == '__main__': - r = Github(token="xxxx") - username = "zhangting85" - orgname = "TestUpCommunity" - reponame ="simpleWebtest" - # case 1 - x = r.repos.get_repo(username, reponame) - print(x.status_code) - assert x.status_code == 200 - print(x.text) - x = r.repos.traffic.list_clones(username, reponame) - assert x.status_code == 200 - print(x.text) diff --git a/operations/__init__.py b/operations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/operations/repo.py b/operations/repo.py new file mode 100644 index 0000000..97789f2 --- /dev/null +++ b/operations/repo.py @@ -0,0 +1,39 @@ +from core.base import CommonItem + + +def create_repo(github, name, org=None, description=None, homepage=None, private=False, has_issues=True, + has_projects=True, has_wiki=True): + """ + + :param github: github 对象 + :param name: string, repo 名称 + :param org: string, 如果是要在一个organization下建repo,就在这里输入 org 名字;否则默认建在当前用户下。 + :param description: string, repo的描述 + :param homepage: string, repo的主页URL + :param private: boolean, 值为 true的时候建立一个私有repo,为 false时建立公开repo,默认是false + :param has_issues: boolean, true会建立有issues的repo, false 则没有,默认是true + :param has_projects: boolean, true会建立有projects的repo, false 则没有,默认是true + :param has_wiki: boolean, true会建立有wiki的repo,false则没有,默认是true + :return: common item + """ + result = CommonItem() + payload = { + "name": name, + "description": description, + "homepage": homepage, + "private": private, + "has_issues": has_issues, + "has_projects": has_projects, + "has_wiki": has_wiki + } + result.success = False + if org: + response = github.repos.create_organization_repo(org=org, json=payload) + else: + response = github.repos.create_user_repo(json=payload) + result.response = response + if response.status_code == 201: + result.success = True + else: + result.error = "create repo got {},should be 201".format(str(response.status_code)) + return result diff --git a/scripts/debug.py b/scripts/debug.py new file mode 100644 index 0000000..1a1b97e --- /dev/null +++ b/scripts/debug.py @@ -0,0 +1,13 @@ +from github import Github +from operations.repo import create_repo + +if __name__ == '__main__': + github = Github(token="xxxx") + + # # test 1: 在当前用户下创建一个repo,除了repo名字以外全部用默认值 + result = create_repo(github, "simpletest") + assert result.success == True, result.error + + # test 2: 在当前用户下创建一个repo,使用一些输入值 + result = create_repo(github, "simpletest03", has_issues=False) + assert result.success == True, result.error From ea99e999cddab5269f69b75287d7761232732cd3 Mon Sep 17 00:00:00 2001 From: zhangting <89507288@qq.com> Date: Tue, 28 May 2019 07:56:54 +0800 Subject: [PATCH 20/55] update a folder name --- api/{pull_requests => pulls}/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename api/{pull_requests => pulls}/__init__.py (100%) diff --git a/api/pull_requests/__init__.py b/api/pulls/__init__.py similarity index 100% rename from api/pull_requests/__init__.py rename to api/pulls/__init__.py From 5e300f97cecc461d61ebc8d1812bd88c145860b6 Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Tue, 28 May 2019 11:07:59 +0800 Subject: [PATCH 21/55] =?UTF-8?q?=E6=9B=B4=E6=96=B0hooks=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9Epages=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/hooks.py | 6 ++++ api/repositories/pages.py | 68 +++++++++++++++++++++++++++++++++++++++ api/repositories/repos.py | 2 ++ 3 files changed, 76 insertions(+) create mode 100644 api/repositories/pages.py diff --git a/api/repositories/hooks.py b/api/repositories/hooks.py index b5c7e44..18b5729 100644 --- a/api/repositories/hooks.py +++ b/api/repositories/hooks.py @@ -38,3 +38,9 @@ def list_hooks(self,owner,repo, **kwargs): https://developer.github.com/v3/repos/hooks#list-hooks """ return self.get("/repos/{}/{}/hooks".format(owner, repo), **kwargs) + + def pubSubHubbub(self, owner, repo, event, **kwargs): + """ + https://developer.github.com/v3/repos/hooks/#pubsubhubbub + """ + return self.post("/repos/{}/{}/events/{}".format(owner, repo, event), **kwargs) \ No newline at end of file diff --git a/api/repositories/pages.py b/api/repositories/pages.py new file mode 100644 index 0000000..0438223 --- /dev/null +++ b/api/repositories/pages.py @@ -0,0 +1,68 @@ +from core.rest_client import RestClient + + +class Pages(RestClient): + + def get_latest_pages_build(self, owner, repo): + """ + https://developer.github.com/v3/repos/pages/#get-latest-pages-build + """ + return self.get("/repos/{}/{}/pages/builds/latest".format(owner, repo)) + + def List_pages_builds(self, owner, repo): + """ + https://developer.github.com/v3/repos/pages/#list-pages-builds + """ + return self.get("/repos/{}/{}/pages/builds".format(owner, repo)) + + def request_a_page_build(self, owner, repo, access = False): + """ + https://developer.github.com/v3/repos/pages/#request-a-page-build + """ + if access: + headers= {'Accept':'application/vnd.github.switcheroo-preview+json'} + return self.post("/repos/{}/{}/pages/builds".format(owner, repo), headers) + return self.post("/repos/{}/{}/pages/builds".format(owner, repo)) + + def update_information_about_a_pages_site(self, owner, repo, developers = False, **kwargs): + """ + https://developer.github.com/v3/repos/pages/#update-information-about-a-pages-site + """ + if developers: + headers = {'Accept':'application/vnd.github.mister-fantastic-preview+json'} + return self.put("/repos/{}/{}/pages".format(owner, repo), headers = headers, **kwargs) + else: + return self.put("/repos/{}/{}/pages".format(owner, repo), **kwargs) + + def disable_a_pages_site(self, owner, repo, developers = False): + """ + https://developer.github.com/v3/repos/pages/#disable-a-pages-site + """ + if developers: + headers = {'Accept':'application/vnd.github.switcheroo-preview+json'} + self.delete("/repos/{}/{}/pages".format(owner, repo),headers = headers) + else: + self.delete("/repos/{}/{}/pages".format(owner, repo)) + + def enable_a_pages_site(self, owner, repo, access = False, developers = False, **kwargs): + """ + https://developer.github.com/v3/repos/pages/#enable-a-pages-site + """ + if access: + headers = {'Accept':'application/vnd.github.switcheroo-preview+json'} + return self.post("/repos/{}/{}/pages".format(owner, repo), headers = headers, **kwargs) + elif developers: + headers = {'Accept': 'application/vnd.github.mister-fantastic-preview+json'} + return self.post("/repos/{}/{}/pages".format(owner, repo), headers = headers, **kwargs) + else: + return self.post("/repos/{}/{}/pages".format(owner, repo), **kwargs) + + def get_information_about_a_pages_site(self, owner, repo, developers = False): + """ + https://developer.github.com/v3/repos/pages/#get-information-about-a-pages-site + """ + if developers: + headers = {'Accept': 'application/vnd.github.mister-fantastic-preview+json'} + return self.get("/repos/{}/{}/pages".format(owner, repo), headers = headers) + else: + return self.get("/repos/{}/{}/pages".format(owner, repo)) \ No newline at end of file diff --git a/api/repositories/repos.py b/api/repositories/repos.py index daad58c..6f9b2fc 100644 --- a/api/repositories/repos.py +++ b/api/repositories/repos.py @@ -5,6 +5,7 @@ from api.repositories.statuses import Statuses from api.repositories.hooks import Hooks from api.repositories.branches import Branches +from api.repositories.pages import Pages class Repos(RestClient): def __init__(self, api_root_url, **kwargs): @@ -15,6 +16,7 @@ def __init__(self, api_root_url, **kwargs): self.statuses = Statuses(self.api_root_url, **kwargs) self.hooks = Hooks(self.api_root_url, **kwargs) self.branches = Branches(self.api_root_url, **kwargs) + self.pages = Pages(self.api_root_url, **kwargs) def list_your_repos(self, **kwargs): """ From 78cc4c268506a8ad586011a7ba7695b0a7e7ac83 Mon Sep 17 00:00:00 2001 From: zhangting <89507288@qq.com> Date: Sat, 1 Jun 2019 07:51:22 +0800 Subject: [PATCH 22/55] rename some folder --- api/{github_apps => apps}/__init__.py | 0 api/{github_marketplace => marketplace}/__init__.py | 0 api/{miscellaneous => misc}/__init__.py | 0 api/{organizations => orgs}/__init__.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename api/{github_apps => apps}/__init__.py (100%) rename api/{github_marketplace => marketplace}/__init__.py (100%) rename api/{miscellaneous => misc}/__init__.py (100%) rename api/{organizations => orgs}/__init__.py (100%) diff --git a/api/github_apps/__init__.py b/api/apps/__init__.py similarity index 100% rename from api/github_apps/__init__.py rename to api/apps/__init__.py diff --git a/api/github_marketplace/__init__.py b/api/marketplace/__init__.py similarity index 100% rename from api/github_marketplace/__init__.py rename to api/marketplace/__init__.py diff --git a/api/miscellaneous/__init__.py b/api/misc/__init__.py similarity index 100% rename from api/miscellaneous/__init__.py rename to api/misc/__init__.py diff --git a/api/organizations/__init__.py b/api/orgs/__init__.py similarity index 100% rename from api/organizations/__init__.py rename to api/orgs/__init__.py From b408d812db4905d69aab2102e3376b688f36279a Mon Sep 17 00:00:00 2001 From: zhangting85 <89507288@qq.com> Date: Sun, 2 Jun 2019 09:15:47 +0800 Subject: [PATCH 23/55] add list_check_runs api (#737) --- api/checks/checks.py | 8 ++++++++ api/checks/runs.py | 13 +++++++++++++ github.py | 3 ++- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 api/checks/checks.py create mode 100644 api/checks/runs.py diff --git a/api/checks/checks.py b/api/checks/checks.py new file mode 100644 index 0000000..d5defe8 --- /dev/null +++ b/api/checks/checks.py @@ -0,0 +1,8 @@ +from core.rest_client import RestClient +from api.checks.runs import Runs + + +class Checks(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Checks, self).__init__(api_root_url, **kwargs) + self.runs = Runs(self.api_root_url, **kwargs) diff --git a/api/checks/runs.py b/api/checks/runs.py new file mode 100644 index 0000000..f55d7af --- /dev/null +++ b/api/checks/runs.py @@ -0,0 +1,13 @@ +from core.rest_client import RestClient +from copy import deepcopy + + +class Runs(RestClient): + + def list_check_runs(self, owner, repo, ref, **kwargs): + """ + https://developer.github.com/v3/checks/runs/#list-check-runs-for-a-specific-ref + """ + copied_headers = deepcopy(self.session.headers) + copied_headers['Accept'] = 'application/vnd.github.antiope-preview+json' + return self.get("/repos/{}/{}/commits/{}/check-runs".format(owner, repo, ref), headers=copied_headers, **kwargs) diff --git a/github.py b/github.py index 1454899..b5dc7a8 100644 --- a/github.py +++ b/github.py @@ -1,9 +1,10 @@ from api.repositories.repos import Repos from api.issues.issues import Issues - +from api.checks.checks import Checks class Github(): def __init__(self, **kwargs): self.api_root_url = "https://api.github.com" self.repos = Repos(self.api_root_url, **kwargs) self.issues = Issues(self.api_root_url, **kwargs) + self.checks = Checks(self.api_root_url, **kwargs) From 81d16397108f0f7316504ad1b7246b6778720857 Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Mon, 3 Jun 2019 09:57:18 +0800 Subject: [PATCH 24/55] =?UTF-8?q?=E4=BF=AE=E6=94=B9pages=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/pages.py | 55 ++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/api/repositories/pages.py b/api/repositories/pages.py index 0438223..f237384 100644 --- a/api/repositories/pages.py +++ b/api/repositories/pages.py @@ -1,5 +1,5 @@ from core.rest_client import RestClient - +from copy import deepcopy class Pages(RestClient): @@ -15,54 +15,43 @@ def List_pages_builds(self, owner, repo): """ return self.get("/repos/{}/{}/pages/builds".format(owner, repo)) - def request_a_page_build(self, owner, repo, access = False): + def request_a_page_build(self, owner, repo): """ https://developer.github.com/v3/repos/pages/#request-a-page-build """ - if access: - headers= {'Accept':'application/vnd.github.switcheroo-preview+json'} - return self.post("/repos/{}/{}/pages/builds".format(owner, repo), headers) - return self.post("/repos/{}/{}/pages/builds".format(owner, repo)) + copied_headers = deepcopy(self.session.headers) + copied_headers['Accept'] = 'application/vnd.github.mister-fantastic-preview+json' + return self.post("/repos/{}/{}/pages/builds".format(owner, repo),headers = copied_headers) - def update_information_about_a_pages_site(self, owner, repo, developers = False, **kwargs): + def update_information_about_a_pages_site(self, owner, repo, **kwargs): """ https://developer.github.com/v3/repos/pages/#update-information-about-a-pages-site """ - if developers: - headers = {'Accept':'application/vnd.github.mister-fantastic-preview+json'} - return self.put("/repos/{}/{}/pages".format(owner, repo), headers = headers, **kwargs) - else: - return self.put("/repos/{}/{}/pages".format(owner, repo), **kwargs) + copied_headers = deepcopy(self.session.headers) + copied_headers['Accept'] = 'application/vnd.github.mister-fantastic-preview+json' + return self.put("/repos/{}/{}/pages".format(owner, repo), headers = copied_headers, **kwargs) - def disable_a_pages_site(self, owner, repo, developers = False): + def disable_a_pages_site(self, owner, repo): """ https://developer.github.com/v3/repos/pages/#disable-a-pages-site """ - if developers: - headers = {'Accept':'application/vnd.github.switcheroo-preview+json'} - self.delete("/repos/{}/{}/pages".format(owner, repo),headers = headers) - else: - self.delete("/repos/{}/{}/pages".format(owner, repo)) + copied_headers = deepcopy(self.session.headers) + copied_headers['Accept'] = 'application/vnd.github.switcheroo-preview+json' + return self.delete("/repos/{}/{}/pages".format(owner, repo),headers = copied_headers) - def enable_a_pages_site(self, owner, repo, access = False, developers = False, **kwargs): + def enable_a_pages_site(self, owner, repo, **kwargs): """ https://developer.github.com/v3/repos/pages/#enable-a-pages-site """ - if access: - headers = {'Accept':'application/vnd.github.switcheroo-preview+json'} - return self.post("/repos/{}/{}/pages".format(owner, repo), headers = headers, **kwargs) - elif developers: - headers = {'Accept': 'application/vnd.github.mister-fantastic-preview+json'} - return self.post("/repos/{}/{}/pages".format(owner, repo), headers = headers, **kwargs) - else: - return self.post("/repos/{}/{}/pages".format(owner, repo), **kwargs) + copied_headers = deepcopy(self.session.headers) + copied_headers['Accept'] = 'application/vnd.github.switcheroo-preview+json ' \ + ',application/vnd.github.mister-fantastic-preview+json' + return self.post("/repos/{}/{}/pages".format(owner, repo), **kwargs) - def get_information_about_a_pages_site(self, owner, repo, developers = False): + def get_information_about_a_pages_site(self, owner, repo): """ https://developer.github.com/v3/repos/pages/#get-information-about-a-pages-site """ - if developers: - headers = {'Accept': 'application/vnd.github.mister-fantastic-preview+json'} - return self.get("/repos/{}/{}/pages".format(owner, repo), headers = headers) - else: - return self.get("/repos/{}/{}/pages".format(owner, repo)) \ No newline at end of file + copied_headers = deepcopy(self.session.headers) + copied_headers['Accept'] = 'application/vnd.github.mister-fantastic-preview+json' + return self.get("/repos/{}/{}/pages".format(owner, repo), headers = copied_headers) \ No newline at end of file From f022c552eaa859f1329efc9198af6364506bb5eb Mon Sep 17 00:00:00 2001 From: zhangting <89507288@qq.com> Date: Tue, 4 Jun 2019 08:26:49 +0800 Subject: [PATCH 25/55] fix the preview api --- api/checks/runs.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/api/checks/runs.py b/api/checks/runs.py index f55d7af..a5d0dca 100644 --- a/api/checks/runs.py +++ b/api/checks/runs.py @@ -1,5 +1,4 @@ from core.rest_client import RestClient -from copy import deepcopy class Runs(RestClient): @@ -8,6 +7,5 @@ def list_check_runs(self, owner, repo, ref, **kwargs): """ https://developer.github.com/v3/checks/runs/#list-check-runs-for-a-specific-ref """ - copied_headers = deepcopy(self.session.headers) - copied_headers['Accept'] = 'application/vnd.github.antiope-preview+json' - return self.get("/repos/{}/{}/commits/{}/check-runs".format(owner, repo, ref), headers=copied_headers, **kwargs) + headers = {'Accept': 'application/vnd.github.antiope-preview+json'} + return self.get("/repos/{}/{}/commits/{}/check-runs".format(owner, repo, ref), headers=headers, **kwargs) From abf1f7296b2ad2330fd29b86d47bc18a3290ad00 Mon Sep 17 00:00:00 2001 From: vlonly Date: Mon, 10 Jun 2019 16:47:24 +0800 Subject: [PATCH 26/55] #166-#170 --- api/repositories/collaborators.py | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 api/repositories/collaborators.py diff --git a/api/repositories/collaborators.py b/api/repositories/collaborators.py new file mode 100644 index 0000000..f8fba60 --- /dev/null +++ b/api/repositories/collaborators.py @@ -0,0 +1,36 @@ +from core.rest_client import RestClient + +class Collaborators(RestClient): + + def list_collaborators(self,owner,repo,**kwargs): + """ + https://developer.github.com/v3/repos/collaborators/#list-collaborators + """ + headlers = {'Accept':'application/vnd.github.hellcat-preview+json'} + return self.get('/repos/{}/{}/collaborators'.format(owner, repo), headlers=headlers, **kwargs) + + def Check_if_a_user_is_a_collaborator(self,owner,repo,username,**kwargs): + """ + https://developer.github.com/v3/repos/collaborators/#check-if-a-user-is-a-collaborator + """ + headlers = {'Accept': 'application/vnd.github.hellcat-preview+json'} + return self.get('/repos/{}/{}/collaborators/{}'.format(owner,repo,username), headlers=headlers, **kwargs) + + def Review_a_user_permission_level(self,owner,repo,username,**kwargs): + """ + https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level + permission: admin, write, read, none + """ + return self.get('/repos/{}/{}/collaborators/{}/permission'.format(owner,repo,username), **kwargs) + + def Add_user_as_a_collaborator(self,owner,repo,username,**kwargs): + """ + https://developer.github.com/v3/repos/collaborators/#add-user-as-a-collaborator + """ + return self.put('/repos/:owner/{}/collaborators/{}'.format(owner,repo,username), **kwargs) + + def Remove_user_as_a_collaborator(self,owner,repo,username,**kwargs): + """ + https://developer.github.com/v3/repos/collaborators/#remove-user-as-a-collaborator + """ + return self.delete('/repos/{}/{}/collaborators/{}'.format(owner,repo,username), **kwargs) \ No newline at end of file From 1a3dfaedbda0a37646a9831630afe56732232edf Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Thu, 13 Jun 2019 16:56:25 +0800 Subject: [PATCH 27/55] =?UTF-8?q?=E4=BF=AE=E6=94=B9pages=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9Erepositories=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/pages.py | 32 ++++++++++------------ api/repositories/repositories.py | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 18 deletions(-) create mode 100644 api/repositories/repositories.py diff --git a/api/repositories/pages.py b/api/repositories/pages.py index f237384..928297d 100644 --- a/api/repositories/pages.py +++ b/api/repositories/pages.py @@ -1,5 +1,4 @@ from core.rest_client import RestClient -from copy import deepcopy class Pages(RestClient): @@ -9,7 +8,7 @@ def get_latest_pages_build(self, owner, repo): """ return self.get("/repos/{}/{}/pages/builds/latest".format(owner, repo)) - def List_pages_builds(self, owner, repo): + def list_pages_builds(self, owner, repo): """ https://developer.github.com/v3/repos/pages/#list-pages-builds """ @@ -19,39 +18,36 @@ def request_a_page_build(self, owner, repo): """ https://developer.github.com/v3/repos/pages/#request-a-page-build """ - copied_headers = deepcopy(self.session.headers) - copied_headers['Accept'] = 'application/vnd.github.mister-fantastic-preview+json' - return self.post("/repos/{}/{}/pages/builds".format(owner, repo),headers = copied_headers) + + headers = {'Accept':'application/vnd.github.mister-fantastic-preview+json'} + return self.post("/repos/{}/{}/pages/builds".format(owner, repo),headers = headers) def update_information_about_a_pages_site(self, owner, repo, **kwargs): """ https://developer.github.com/v3/repos/pages/#update-information-about-a-pages-site """ - copied_headers = deepcopy(self.session.headers) - copied_headers['Accept'] = 'application/vnd.github.mister-fantastic-preview+json' - return self.put("/repos/{}/{}/pages".format(owner, repo), headers = copied_headers, **kwargs) + headers = {'Accept':'application/vnd.github.mister-fantastic-preview+json'} + return self.put("/repos/{}/{}/pages".format(owner, repo), headers = headers, **kwargs) def disable_a_pages_site(self, owner, repo): """ https://developer.github.com/v3/repos/pages/#disable-a-pages-site """ - copied_headers = deepcopy(self.session.headers) - copied_headers['Accept'] = 'application/vnd.github.switcheroo-preview+json' - return self.delete("/repos/{}/{}/pages".format(owner, repo),headers = copied_headers) + headers = {'Accept': 'application/vnd.github.switcheroo-preview+json'} + return self.delete("/repos/{}/{}/pages".format(owner, repo),headers = headers) def enable_a_pages_site(self, owner, repo, **kwargs): """ https://developer.github.com/v3/repos/pages/#enable-a-pages-site """ - copied_headers = deepcopy(self.session.headers) - copied_headers['Accept'] = 'application/vnd.github.switcheroo-preview+json ' \ - ',application/vnd.github.mister-fantastic-preview+json' - return self.post("/repos/{}/{}/pages".format(owner, repo), **kwargs) + headers = {'Accept': 'application/vnd.github.switcheroo-preview+json' + ',application/vnd.github.mister-fantastic-preview+json'} + return self.post("/repos/{}/{}/pages".format(owner, repo),headers =headers, **kwargs) def get_information_about_a_pages_site(self, owner, repo): """ https://developer.github.com/v3/repos/pages/#get-information-about-a-pages-site """ - copied_headers = deepcopy(self.session.headers) - copied_headers['Accept'] = 'application/vnd.github.mister-fantastic-preview+json' - return self.get("/repos/{}/{}/pages".format(owner, repo), headers = copied_headers) \ No newline at end of file + + headers = {'Accept':'application/vnd.github.mister-fantastic-preview+json'} + return self.get("/repos/{}/{}/pages".format(owner, repo), headers = headers) \ No newline at end of file diff --git a/api/repositories/repositories.py b/api/repositories/repositories.py new file mode 100644 index 0000000..e8c0e11 --- /dev/null +++ b/api/repositories/repositories.py @@ -0,0 +1,46 @@ +from core.rest_client import RestClient + +class repositories(RestClient): + + def replace_all_topics_for_a_repository(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/#replace-all-topics-for-a-repository + """ + headers = {'Accept':'application/vnd.github.mercy-preview+json'} + return self.put("/repos/{}/{}/topics".format(owner, repo), headers = headers, **kwargs) + + def list_contributors(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/#list-contributors + """ + return self.get('/repos/{}/{}/contributors'.format(owner, repo), **kwargs) + + def list_languages(self, owner, repo): + """ + https://developer.github.com/v3/repos/#list-languages + """ + return self.get('/repos/{}/{}/languages'.format(owner, repo)) + + def list_tags(self, owner, repo): + """ + https://developer.github.com/v3/repos/#list-tags + """ + return self.get('/repos/{}/{}/tags'.format(owner, repo)) + + def delete_a_repository(self, owner, repo): + """ + https://developer.github.com/v3/repos/#delete-a-repository + """ + return self.delete('/repos/{}/{}'.format(owner, repo)) + + def transfer_a_repository(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/#transfer-a-repository + """ + headers = {'Accept':'application/vnd.github.nightshade-preview+json'} + return self.delete('/repos/{}/{}/transfer'.format(owner, repo), headers = headers ,**kwargs) + + + + + From 1b0585e3597721adee3a974cdea2174f996d260e Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Thu, 13 Jun 2019 17:29:18 +0800 Subject: [PATCH 28/55] - --- api/repositories/repos.py | 2 ++ api/repositories/repositories.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/api/repositories/repos.py b/api/repositories/repos.py index 6f9b2fc..9af0235 100644 --- a/api/repositories/repos.py +++ b/api/repositories/repos.py @@ -6,6 +6,7 @@ from api.repositories.hooks import Hooks from api.repositories.branches import Branches from api.repositories.pages import Pages +from api.repositories.repositories import Repositories class Repos(RestClient): def __init__(self, api_root_url, **kwargs): @@ -17,6 +18,7 @@ def __init__(self, api_root_url, **kwargs): self.hooks = Hooks(self.api_root_url, **kwargs) self.branches = Branches(self.api_root_url, **kwargs) self.pages = Pages(self.api_root_url, **kwargs) + self.repositories = Repositories(self.api_root_url, **kwargs ) def list_your_repos(self, **kwargs): """ diff --git a/api/repositories/repositories.py b/api/repositories/repositories.py index e8c0e11..31c735e 100644 --- a/api/repositories/repositories.py +++ b/api/repositories/repositories.py @@ -1,6 +1,6 @@ from core.rest_client import RestClient -class repositories(RestClient): +class Repositories(RestClient): def replace_all_topics_for_a_repository(self, owner, repo, **kwargs): """ @@ -40,7 +40,7 @@ def transfer_a_repository(self, owner, repo, **kwargs): headers = {'Accept':'application/vnd.github.nightshade-preview+json'} return self.delete('/repos/{}/{}/transfer'.format(owner, repo), headers = headers ,**kwargs) - + From 12c5a565c2ddc8f158f96849bdc66eabb49c46fd Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Sat, 15 Jun 2019 15:34:33 +0800 Subject: [PATCH 29/55] =?UTF-8?q?=E6=96=B0=E5=A2=9Eprojects,columns,collab?= =?UTF-8?q?orators,cards=E6=8E=A5=E5=8F=A3=E5=B0=81=E8=A3=85=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/projects/cards.py | 45 +++++++++++++++++++++ api/projects/collaborators.py | 32 +++++++++++++++ api/projects/columns.py | 48 ++++++++++++++++++++++ api/projects/projects.py | 75 +++++++++++++++++++++++++++++++++++ 4 files changed, 200 insertions(+) create mode 100644 api/projects/cards.py create mode 100644 api/projects/collaborators.py create mode 100644 api/projects/columns.py create mode 100644 api/projects/projects.py diff --git a/api/projects/cards.py b/api/projects/cards.py new file mode 100644 index 0000000..e450b9f --- /dev/null +++ b/api/projects/cards.py @@ -0,0 +1,45 @@ +from core.rest_client import RestClient + +class Cards(RestClient): + + def list_project_cards(self, column_id, **kwargs): + """ + https://developer.github.com/v3/projects/cards/#list-project-cards + """ + hearders = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/projects/columns/{}/cards'.format(column_id), hearders = hearders, **kwargs) + + def get_a_project_card(self, card_id): + """ + https://developer.github.com/v3/projects/cards/#get-a-project-card + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.get('/projects/columns/cards/{}'.format(card_id), hearders = hearders) + + def create_a_project_card(self, column_id, **kwargs): + """ + https://developer.github.com/v3/projects/cards/#create-a-project-card + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.post('/projects/columns/{}/cards'.format(column_id), hearders = hearders, **kwargs) + + def update_a_project_card(self, card_id, **kwargs): + """ + https://developer.github.com/v3/projects/cards/#update-a-project-card + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.patch('/projects/columns/cards/{}'.format(card_id), hearders = hearders, **kwargs) + + def delete_a_project_card(self, card_id): + """ + https://developer.github.com/v3/projects/cards/#delete-a-project-card + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.delete('/projects/columns/cards/{}'.format(card_id), hearders = hearders) + + def move_a_project_card(self, card_id, **kwargs): + """ + https://developer.github.com/v3/projects/cards/#move-a-project-card + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.post('/projects/columns/cards/{}/moves'.format(card_id),hearders = hearders, **kwargs) diff --git a/api/projects/collaborators.py b/api/projects/collaborators.py new file mode 100644 index 0000000..a62483a --- /dev/null +++ b/api/projects/collaborators.py @@ -0,0 +1,32 @@ +from core.rest_client import RestClient + +class Collaborators(RestClient): + + def add_user_as_a_collaborator(self, project_id, username, **kwargs): + """ + https://developer.github.com/v3/projects/collaborators/#add-user-as-a-collaborator + """ + headers ={'Accept':'application/vnd.github.inertia-preview+json'} + return self.put('/projects/{}/collaborators/{}'.format(project_id, username),headers = headers, **kwargs) + + def list_collaborator(self, project_id, **kwargs): + """ + https://developer.github.com/v3/projects/collaborators/#list-collaborators + """ + headers = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.get('/projects/{}/collaborators'.format(project_id), headers = headers, **kwargs) + + def review_a_users_permission_level(self, project_id, username, **kwargs): + """ + https://developer.github.com/v3/projects/collaborators/#review-a-users-permission-level + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/projects/{}/collaborators/{}/permission'.format(project_id,username), headers = headers, **kwargs) + + def remove_user_as_a_collaborator(self, project_id, username): + """ + https://developer.github.com/v3/projects/collaborators/#remove-user-as-a-collaborator + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.delete('/projects/{}/collaborators/{}'.format(project_id,username), headers = headers) + diff --git a/api/projects/columns.py b/api/projects/columns.py new file mode 100644 index 0000000..d26277c --- /dev/null +++ b/api/projects/columns.py @@ -0,0 +1,48 @@ +from core.rest_client import RestClient + +class Columns(RestClient): + + def create_a_project_column(self, project_id, **kwargs): + """ + https://developer.github.com/v3/projects/columns/#create-a-project-column + """ + headers ={'Accept':'application/vnd.github.inertia-preview+json'} + return self.post('/projects/{}/columns'.format(project_id), headers, **kwargs) + + def delete_a_project_column(self, column_id): + """ + https://developer.github.com/v3/projects/columns/#delete-a-project-column + """ + hearders = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.delete('/projects/columns/{}'.format(column_id), hearders = hearders) + + def update_a_project_column(self, column_id): + """ + https://developer.github.com/v3/projects/columns/#update-a-project-column + """ + hearders = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.patch('/projects/columns/{}'.format(column_id), hearders = hearders) + + def move_a_project_column(self, column_id, **kwargs): + """ + https://developer.github.com/v3/projects/columns/#move-a-project-column + """ + hearders = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.post('/projects/columns/{}/moves'.format(column_id), hearders = hearders, **kwargs) + + def get_a_project_column(self, column_id): + """ + https://developer.github.com/v3/projects/columns/#get-a-project-column + """ + hearders = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/projects/columns/{}'.format(column_id), hearders = hearders) + + def list_project_columns(self, project_id): + """ + https://developer.github.com/v3/projects/columns/#list-project-columns + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.get('/projects/{}/columns'.format(project_id), hearders=hearders) + + + diff --git a/api/projects/projects.py b/api/projects/projects.py new file mode 100644 index 0000000..8cf43c7 --- /dev/null +++ b/api/projects/projects.py @@ -0,0 +1,75 @@ +from core.rest_client import RestClient +from api.projects.cards import Cards +from api.projects.columns import Columns + + +class Projects(RestClient): + def __int__(self, api_root_url, **kwargs): + super(Projects, self).__init__(api_root_url, **kwargs) + self.cards = Cards(self.api_root_url, **kwargs) + self.columns = Columns(self.api_root_url, **kwargs) + + def list_repository_projects(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/projects/#list-repository-projects + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/repos/:{}/{}/projects'.format(owner,repo), headers = headers, **kwargs) + + def list_organization_projects(self, org, **kwargs): + """ + https://developer.github.com/v3/projects/#list-organization-projects + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/orgs/{}/projects'.format(org), headers =headers, **kwargs) + + def list_user_projects(self, username, **kwargs): + """ + https://developer.github.com/v3/projects/#list-user-projects + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/users/{}/projects'.format(username),headers = headers, **kwargs) + + def get_a_project(self, project_id): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/projects/{}'.format(project_id), headers = headers) + + def create_a_repository_projec(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.post('/repos/{}/{}/projects'.format(owner,repo), headers = headers, **kwargs) + + def create_an_organization_project(self, org, **kwargs): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + + return self.post('/orgs/{}/projects'.format(org), headers = headers, **kwargs) + + def create_a_user_project(self, **kwargs): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.post('/user/projects', headers = headers, **kwargs) + + def update_a_project(self, project_id, **kwargs): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.patch('/projects/{}'.format(project_id), headers = headers, **kwargs) + + def delete_a_project(self, project_id): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + + return self.delete('/projects/'.format(project_id), headers = headers) \ No newline at end of file From f0834997a25f9d2d0a5c8615d0731fcf4328de83 Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Sat, 15 Jun 2019 15:39:51 +0800 Subject: [PATCH 30/55] =?UTF-8?q?=E4=BF=AE=E6=94=B9projects=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/projects/projects.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/projects/projects.py b/api/projects/projects.py index 8cf43c7..e78d9ee 100644 --- a/api/projects/projects.py +++ b/api/projects/projects.py @@ -1,13 +1,14 @@ from core.rest_client import RestClient from api.projects.cards import Cards from api.projects.columns import Columns - +from api.projects.collaborators import Collaborators class Projects(RestClient): def __int__(self, api_root_url, **kwargs): super(Projects, self).__init__(api_root_url, **kwargs) self.cards = Cards(self.api_root_url, **kwargs) self.columns = Columns(self.api_root_url, **kwargs) + self.collaborators = Collaborators(self.api_root_url, **kwargs) def list_repository_projects(self, owner, repo, **kwargs): """ From 11b8aded721c6bd25fdb3f26683360712898c6fa Mon Sep 17 00:00:00 2001 From: xingchen <41198927+bgfNGl35QpGme9mpx0f4b8yE3S@users.noreply.github.com> Date: Thu, 4 Jul 2019 07:41:17 +0800 Subject: [PATCH 31/55] =?UTF-8?q?=E6=9B=B4=E6=96=B0hooks=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9Epages=E6=96=87=E4=BB=B6-=E5=B7=B2?= =?UTF-8?q?=E8=AF=84=E5=AE=A1=20(#541)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 更新hooks文件,新增pages文件 * 修改pages文件 * 修改pages文件,新增repositories文件 * - * 新增projects,columns,collaborators,cards接口封装文件 * 修改projects文件 --- api/projects/cards.py | 45 +++++++++++++++++++ api/projects/collaborators.py | 32 ++++++++++++++ api/projects/columns.py | 48 ++++++++++++++++++++ api/projects/projects.py | 76 ++++++++++++++++++++++++++++++++ api/repositories/hooks.py | 6 +++ api/repositories/pages.py | 53 ++++++++++++++++++++++ api/repositories/repos.py | 4 ++ api/repositories/repositories.py | 46 +++++++++++++++++++ 8 files changed, 310 insertions(+) create mode 100644 api/projects/cards.py create mode 100644 api/projects/collaborators.py create mode 100644 api/projects/columns.py create mode 100644 api/projects/projects.py create mode 100644 api/repositories/pages.py create mode 100644 api/repositories/repositories.py diff --git a/api/projects/cards.py b/api/projects/cards.py new file mode 100644 index 0000000..e450b9f --- /dev/null +++ b/api/projects/cards.py @@ -0,0 +1,45 @@ +from core.rest_client import RestClient + +class Cards(RestClient): + + def list_project_cards(self, column_id, **kwargs): + """ + https://developer.github.com/v3/projects/cards/#list-project-cards + """ + hearders = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/projects/columns/{}/cards'.format(column_id), hearders = hearders, **kwargs) + + def get_a_project_card(self, card_id): + """ + https://developer.github.com/v3/projects/cards/#get-a-project-card + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.get('/projects/columns/cards/{}'.format(card_id), hearders = hearders) + + def create_a_project_card(self, column_id, **kwargs): + """ + https://developer.github.com/v3/projects/cards/#create-a-project-card + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.post('/projects/columns/{}/cards'.format(column_id), hearders = hearders, **kwargs) + + def update_a_project_card(self, card_id, **kwargs): + """ + https://developer.github.com/v3/projects/cards/#update-a-project-card + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.patch('/projects/columns/cards/{}'.format(card_id), hearders = hearders, **kwargs) + + def delete_a_project_card(self, card_id): + """ + https://developer.github.com/v3/projects/cards/#delete-a-project-card + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.delete('/projects/columns/cards/{}'.format(card_id), hearders = hearders) + + def move_a_project_card(self, card_id, **kwargs): + """ + https://developer.github.com/v3/projects/cards/#move-a-project-card + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.post('/projects/columns/cards/{}/moves'.format(card_id),hearders = hearders, **kwargs) diff --git a/api/projects/collaborators.py b/api/projects/collaborators.py new file mode 100644 index 0000000..a62483a --- /dev/null +++ b/api/projects/collaborators.py @@ -0,0 +1,32 @@ +from core.rest_client import RestClient + +class Collaborators(RestClient): + + def add_user_as_a_collaborator(self, project_id, username, **kwargs): + """ + https://developer.github.com/v3/projects/collaborators/#add-user-as-a-collaborator + """ + headers ={'Accept':'application/vnd.github.inertia-preview+json'} + return self.put('/projects/{}/collaborators/{}'.format(project_id, username),headers = headers, **kwargs) + + def list_collaborator(self, project_id, **kwargs): + """ + https://developer.github.com/v3/projects/collaborators/#list-collaborators + """ + headers = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.get('/projects/{}/collaborators'.format(project_id), headers = headers, **kwargs) + + def review_a_users_permission_level(self, project_id, username, **kwargs): + """ + https://developer.github.com/v3/projects/collaborators/#review-a-users-permission-level + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/projects/{}/collaborators/{}/permission'.format(project_id,username), headers = headers, **kwargs) + + def remove_user_as_a_collaborator(self, project_id, username): + """ + https://developer.github.com/v3/projects/collaborators/#remove-user-as-a-collaborator + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.delete('/projects/{}/collaborators/{}'.format(project_id,username), headers = headers) + diff --git a/api/projects/columns.py b/api/projects/columns.py new file mode 100644 index 0000000..d26277c --- /dev/null +++ b/api/projects/columns.py @@ -0,0 +1,48 @@ +from core.rest_client import RestClient + +class Columns(RestClient): + + def create_a_project_column(self, project_id, **kwargs): + """ + https://developer.github.com/v3/projects/columns/#create-a-project-column + """ + headers ={'Accept':'application/vnd.github.inertia-preview+json'} + return self.post('/projects/{}/columns'.format(project_id), headers, **kwargs) + + def delete_a_project_column(self, column_id): + """ + https://developer.github.com/v3/projects/columns/#delete-a-project-column + """ + hearders = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.delete('/projects/columns/{}'.format(column_id), hearders = hearders) + + def update_a_project_column(self, column_id): + """ + https://developer.github.com/v3/projects/columns/#update-a-project-column + """ + hearders = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.patch('/projects/columns/{}'.format(column_id), hearders = hearders) + + def move_a_project_column(self, column_id, **kwargs): + """ + https://developer.github.com/v3/projects/columns/#move-a-project-column + """ + hearders = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.post('/projects/columns/{}/moves'.format(column_id), hearders = hearders, **kwargs) + + def get_a_project_column(self, column_id): + """ + https://developer.github.com/v3/projects/columns/#get-a-project-column + """ + hearders = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/projects/columns/{}'.format(column_id), hearders = hearders) + + def list_project_columns(self, project_id): + """ + https://developer.github.com/v3/projects/columns/#list-project-columns + """ + hearders = {'Accept': 'application/vnd.github.inertia-preview+json'} + return self.get('/projects/{}/columns'.format(project_id), hearders=hearders) + + + diff --git a/api/projects/projects.py b/api/projects/projects.py new file mode 100644 index 0000000..e78d9ee --- /dev/null +++ b/api/projects/projects.py @@ -0,0 +1,76 @@ +from core.rest_client import RestClient +from api.projects.cards import Cards +from api.projects.columns import Columns +from api.projects.collaborators import Collaborators + +class Projects(RestClient): + def __int__(self, api_root_url, **kwargs): + super(Projects, self).__init__(api_root_url, **kwargs) + self.cards = Cards(self.api_root_url, **kwargs) + self.columns = Columns(self.api_root_url, **kwargs) + self.collaborators = Collaborators(self.api_root_url, **kwargs) + + def list_repository_projects(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/projects/#list-repository-projects + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/repos/:{}/{}/projects'.format(owner,repo), headers = headers, **kwargs) + + def list_organization_projects(self, org, **kwargs): + """ + https://developer.github.com/v3/projects/#list-organization-projects + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/orgs/{}/projects'.format(org), headers =headers, **kwargs) + + def list_user_projects(self, username, **kwargs): + """ + https://developer.github.com/v3/projects/#list-user-projects + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/users/{}/projects'.format(username),headers = headers, **kwargs) + + def get_a_project(self, project_id): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.get('/projects/{}'.format(project_id), headers = headers) + + def create_a_repository_projec(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.post('/repos/{}/{}/projects'.format(owner,repo), headers = headers, **kwargs) + + def create_an_organization_project(self, org, **kwargs): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + + return self.post('/orgs/{}/projects'.format(org), headers = headers, **kwargs) + + def create_a_user_project(self, **kwargs): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.post('/user/projects', headers = headers, **kwargs) + + def update_a_project(self, project_id, **kwargs): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + return self.patch('/projects/{}'.format(project_id), headers = headers, **kwargs) + + def delete_a_project(self, project_id): + """ + https://developer.github.com/v3/projects/#get-a-project + """ + headers = {'Accept':'application/vnd.github.inertia-preview+json'} + + return self.delete('/projects/'.format(project_id), headers = headers) \ No newline at end of file diff --git a/api/repositories/hooks.py b/api/repositories/hooks.py index b5c7e44..18b5729 100644 --- a/api/repositories/hooks.py +++ b/api/repositories/hooks.py @@ -38,3 +38,9 @@ def list_hooks(self,owner,repo, **kwargs): https://developer.github.com/v3/repos/hooks#list-hooks """ return self.get("/repos/{}/{}/hooks".format(owner, repo), **kwargs) + + def pubSubHubbub(self, owner, repo, event, **kwargs): + """ + https://developer.github.com/v3/repos/hooks/#pubsubhubbub + """ + return self.post("/repos/{}/{}/events/{}".format(owner, repo, event), **kwargs) \ No newline at end of file diff --git a/api/repositories/pages.py b/api/repositories/pages.py new file mode 100644 index 0000000..928297d --- /dev/null +++ b/api/repositories/pages.py @@ -0,0 +1,53 @@ +from core.rest_client import RestClient + +class Pages(RestClient): + + def get_latest_pages_build(self, owner, repo): + """ + https://developer.github.com/v3/repos/pages/#get-latest-pages-build + """ + return self.get("/repos/{}/{}/pages/builds/latest".format(owner, repo)) + + def list_pages_builds(self, owner, repo): + """ + https://developer.github.com/v3/repos/pages/#list-pages-builds + """ + return self.get("/repos/{}/{}/pages/builds".format(owner, repo)) + + def request_a_page_build(self, owner, repo): + """ + https://developer.github.com/v3/repos/pages/#request-a-page-build + """ + + headers = {'Accept':'application/vnd.github.mister-fantastic-preview+json'} + return self.post("/repos/{}/{}/pages/builds".format(owner, repo),headers = headers) + + def update_information_about_a_pages_site(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/pages/#update-information-about-a-pages-site + """ + headers = {'Accept':'application/vnd.github.mister-fantastic-preview+json'} + return self.put("/repos/{}/{}/pages".format(owner, repo), headers = headers, **kwargs) + + def disable_a_pages_site(self, owner, repo): + """ + https://developer.github.com/v3/repos/pages/#disable-a-pages-site + """ + headers = {'Accept': 'application/vnd.github.switcheroo-preview+json'} + return self.delete("/repos/{}/{}/pages".format(owner, repo),headers = headers) + + def enable_a_pages_site(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/pages/#enable-a-pages-site + """ + headers = {'Accept': 'application/vnd.github.switcheroo-preview+json' + ',application/vnd.github.mister-fantastic-preview+json'} + return self.post("/repos/{}/{}/pages".format(owner, repo),headers =headers, **kwargs) + + def get_information_about_a_pages_site(self, owner, repo): + """ + https://developer.github.com/v3/repos/pages/#get-information-about-a-pages-site + """ + + headers = {'Accept':'application/vnd.github.mister-fantastic-preview+json'} + return self.get("/repos/{}/{}/pages".format(owner, repo), headers = headers) \ No newline at end of file diff --git a/api/repositories/repos.py b/api/repositories/repos.py index daad58c..9af0235 100644 --- a/api/repositories/repos.py +++ b/api/repositories/repos.py @@ -5,6 +5,8 @@ from api.repositories.statuses import Statuses from api.repositories.hooks import Hooks from api.repositories.branches import Branches +from api.repositories.pages import Pages +from api.repositories.repositories import Repositories class Repos(RestClient): def __init__(self, api_root_url, **kwargs): @@ -15,6 +17,8 @@ def __init__(self, api_root_url, **kwargs): self.statuses = Statuses(self.api_root_url, **kwargs) self.hooks = Hooks(self.api_root_url, **kwargs) self.branches = Branches(self.api_root_url, **kwargs) + self.pages = Pages(self.api_root_url, **kwargs) + self.repositories = Repositories(self.api_root_url, **kwargs ) def list_your_repos(self, **kwargs): """ diff --git a/api/repositories/repositories.py b/api/repositories/repositories.py new file mode 100644 index 0000000..31c735e --- /dev/null +++ b/api/repositories/repositories.py @@ -0,0 +1,46 @@ +from core.rest_client import RestClient + +class Repositories(RestClient): + + def replace_all_topics_for_a_repository(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/#replace-all-topics-for-a-repository + """ + headers = {'Accept':'application/vnd.github.mercy-preview+json'} + return self.put("/repos/{}/{}/topics".format(owner, repo), headers = headers, **kwargs) + + def list_contributors(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/#list-contributors + """ + return self.get('/repos/{}/{}/contributors'.format(owner, repo), **kwargs) + + def list_languages(self, owner, repo): + """ + https://developer.github.com/v3/repos/#list-languages + """ + return self.get('/repos/{}/{}/languages'.format(owner, repo)) + + def list_tags(self, owner, repo): + """ + https://developer.github.com/v3/repos/#list-tags + """ + return self.get('/repos/{}/{}/tags'.format(owner, repo)) + + def delete_a_repository(self, owner, repo): + """ + https://developer.github.com/v3/repos/#delete-a-repository + """ + return self.delete('/repos/{}/{}'.format(owner, repo)) + + def transfer_a_repository(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/#transfer-a-repository + """ + headers = {'Accept':'application/vnd.github.nightshade-preview+json'} + return self.delete('/repos/{}/{}/transfer'.format(owner, repo), headers = headers ,**kwargs) + + + + + From 6e2171b34ede0e5a5888eb42bcda59c66503264c Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Wed, 10 Jul 2019 11:54:43 +0800 Subject: [PATCH 32/55] =?UTF-8?q?=E6=96=B0=E5=A2=9Ecomments.py=E3=80=81com?= =?UTF-8?q?mits.py=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/comments.py | 39 ++++++++++++++++++++++++++++++++++++ api/repositories/commits.py | 35 ++++++++++++++++++++++++++++++++ api/repositories/repos.py | 4 ++++ 3 files changed, 78 insertions(+) create mode 100644 api/repositories/comments.py create mode 100644 api/repositories/commits.py diff --git a/api/repositories/comments.py b/api/repositories/comments.py new file mode 100644 index 0000000..0c08946 --- /dev/null +++ b/api/repositories/comments.py @@ -0,0 +1,39 @@ +from core.rest_client import RestClient + +class Comments(RestClient): + + def list_commit_comments_for_a_repository(self, owner, repo): + """ + https://developer.github.com/v3/repos/comments/#list-commit-comments-for-a-repository + """ + return self.get("/repos/{}/{}/comments".format(owner, repo)) + + def list_comment_for_a_single_commit(self, owner, repo, commit_sha): + """ + https://developer.github.com/v3/repos/comments/#list-comments-for-a-single-commit + """ + return self.get("/repos/{}/{}/commits/{}".format(owner, repo, commit_sha)) + + def create_a_commit_comment(self, owner, repo, commit_sha, **kwargs): + """ + https://developer.github.com/v3/repos/comments/#create-a-commit-comment + """ + return self.post("/repos/{}/{}/commits/{}".format(owner, repo, commit_sha), **kwargs) + + def get_a_single_commit_comment(self, owner, repo, comment_id): + """ + https://developer.github.com/v3/repos/comments/#get-a-single-commit-comment + """ + return self.get("/repos/{}/{}/comments/{}".format(owner, repo, comment_id)) + + def update_a_commit_comment(self, owner, repo, comment_id, **kwargs): + """ + https://developer.github.com/v3/repos/comments/#update-a-commit-comment + """ + return self.patch("/repos/{}/{}/comments/{}".format(owner, repo, comment_id), **kwargs) + + def delete_a_comment_commit(self, owner, repo, comment_id): + """ + https://developer.github.com/v3/repos/comments/#delete-a-commit-comment + """ + return self.delete("/repos/{}/{}/comments/{}".format(owner, repo, comment_id)) \ No newline at end of file diff --git a/api/repositories/commits.py b/api/repositories/commits.py new file mode 100644 index 0000000..33312e1 --- /dev/null +++ b/api/repositories/commits.py @@ -0,0 +1,35 @@ +from core.rest_client import RestClient + +class Commits(RestClient): + + def list_commits_on_repository(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository + """ + return self.get("/repos/{}/{}/commits".format(owner, repo), **kwargs) + + def get_a_single_commit(self, owner, repo, ref, **kwargs): + """ + https://developer.github.com/v3/repos/commits/#get-a-single-commit + """ + return self.get("/repoe/{}/{}/commits/{}".format(owner, repo, ref),**kwargs) + + def compare_two_commits(self, owner, repo, base, head, **kwargs): + """ + https://developer.github.com/v3/repos/commits/#compare-two-commits + """ + return self.get("/repos/{}/{}/compare/{}...{}".format(owner, repo, base, head), **kwargs) + + def list_branchese_for_HEAD_commit(self, owner, repo, commit_sha): + """ + https://developer.github.com/v3/repos/commits/#list-branches-for-head-commit + """ + headers = {"Accept":"application/vnd.github.groot-preview+json"} + return self.get("/repos/{}/{}/commits/{}/branches-where-head".format(owner, repo, commit_sha), headers = headers) + + def list_pull_requests_associated_with_commit(self, owner, repo, commit_sha): + """ + https://developer.github.com/v3/repos/commits/#list-pull-requests-associated-with-commit + """ + return self.get("/repos/{}/{}/commits/{}/pulls".format(owner, repo, commit_sha)) + diff --git a/api/repositories/repos.py b/api/repositories/repos.py index 9af0235..507cdeb 100644 --- a/api/repositories/repos.py +++ b/api/repositories/repos.py @@ -7,6 +7,8 @@ from api.repositories.branches import Branches from api.repositories.pages import Pages from api.repositories.repositories import Repositories +from api.repositories.comments import Comments +from api.repositories.commits import Commits class Repos(RestClient): def __init__(self, api_root_url, **kwargs): @@ -19,6 +21,8 @@ def __init__(self, api_root_url, **kwargs): self.branches = Branches(self.api_root_url, **kwargs) self.pages = Pages(self.api_root_url, **kwargs) self.repositories = Repositories(self.api_root_url, **kwargs ) + self.comments = Comments(self.api_root_url, **kwargs ) + self.commits = Commits(self.api_root_url, **kwargs ) def list_your_repos(self, **kwargs): """ From 767a6b7774dd5d320fcea086678352b077b323ee Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Wed, 10 Jul 2019 15:40:25 +0800 Subject: [PATCH 33/55] =?UTF-8?q?=E6=96=B0=E5=A2=9Econtents.py,invitations?= =?UTF-8?q?.py=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/contents.py | 33 +++++++++++++++++++++++++++ api/repositories/invitations.py | 40 +++++++++++++++++++++++++++++++++ api/repositories/repos.py | 4 ++++ 3 files changed, 77 insertions(+) create mode 100644 api/repositories/contents.py create mode 100644 api/repositories/invitations.py diff --git a/api/repositories/contents.py b/api/repositories/contents.py new file mode 100644 index 0000000..6c8d7c8 --- /dev/null +++ b/api/repositories/contents.py @@ -0,0 +1,33 @@ +from core.rest_client import RestClient + +class Contents(RestClient): + + def get_the_readme(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/contents/#get-the-readme + """ + return self.get("/repos/{}/{}/readme".format(owner, repo), **kwargs) + + def get_contents(self, owner, repo, path, **kwargs): + """ + https://developer.github.com/v3/repos/contents/#get-contents + """ + return self.get("/repos/{}/{}/contents/{}".format(owner, repo, path), **kwargs) + + def create_or_update_file(self, owner, repo, path, **kwargs): + """ + https://developer.github.com/v3/repos/contents/#create-or-update-a-file + """ + return self.put("/repo/{}/{}/contents/{}".format(owner, repo, path), **kwargs) + + def delete_a_file(self, owner, repo, path, **kwargs): + """ + https://developer.github.com/v3/repos/contents/#delete-a-file + """ + return self.delete("/repo/{}/{}/contents/{}".format(owner, repo, path), **kwargs) + + def get_archive_link(self, owner, repo, archive_format, ref): + """ + https://developer.github.com/v3/repos/contents/#get-archive-link + """ + return self.get("/repos/{}/{}/{}/".format(owner, repo, archive_format, ref)) diff --git a/api/repositories/invitations.py b/api/repositories/invitations.py new file mode 100644 index 0000000..399fa57 --- /dev/null +++ b/api/repositories/invitations.py @@ -0,0 +1,40 @@ +from core.rest_client import RestClient + +class Invitations(RestClient): + + def list_invitations_for_a_repository(self, owner, repo): + """ + https://developer.github.com/v3/repos/invitations/#invite-a-user-to-a-repository + """ + return self.get("/repos/{}/{}/invitations".format(owner, repo)) + + def delete_a_repository_invitation(self, owner, repo, invitation_id): + """ + https://developer.github.com/v3/repos/invitations/#delete-a-repository-invitation + """ + return self.delete("/repos/{}/{}/invitations/{}".format(owner, repo, invitation_id)) + + def update_a_repository_invitation(self, owner, repo, invitation_id, **kwargs): + """ + https://developer.github.com/v3/repos/invitations/#update-a-repository-invitation + """ + return self.patch("/repos/{}/{}/invitations/{}".format(owner, repo, invitation_id), **kwargs) + + def list_a_user_repository_invitations(self): + """ + https://developer.github.com/v3/repos/invitations/#list-a-users-repository-invitations + """ + return self.get("/user/repository_invitations") + + def accept_a_repository_inviation(self, invitation_id): + """ + https://developer.github.com/v3/repos/invitations/#accept-a-repository-invitation + """ + return self.patch("/user/repository_invitations/{}".format(invitation_id)) + + def decline_a_repository_invitation(self, invitation_id): + """ + https://developer.github.com/v3/repos/invitations/#decline-a-repository-invitation + """ + self.delete("/user/repository_invitations/{}".format(invitation_id)) + diff --git a/api/repositories/repos.py b/api/repositories/repos.py index 507cdeb..0db58ae 100644 --- a/api/repositories/repos.py +++ b/api/repositories/repos.py @@ -9,6 +9,8 @@ from api.repositories.repositories import Repositories from api.repositories.comments import Comments from api.repositories.commits import Commits +from api.repositories.invitations import Invitations +from api.repositories.contents import Contents class Repos(RestClient): def __init__(self, api_root_url, **kwargs): @@ -23,6 +25,8 @@ def __init__(self, api_root_url, **kwargs): self.repositories = Repositories(self.api_root_url, **kwargs ) self.comments = Comments(self.api_root_url, **kwargs ) self.commits = Commits(self.api_root_url, **kwargs ) + self.invitations = Invitations(self.api_root_url, **kwargs ) + self.contents = Contents(self.api_root_url, **kwargs ) def list_your_repos(self, **kwargs): """ From cb89c0e33855733fcf501f4d2b3fc2ee806353f3 Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Wed, 10 Jul 2019 16:06:02 +0800 Subject: [PATCH 34/55] =?UTF-8?q?=E4=BF=AE=E6=94=B9commit.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/commits.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/repositories/commits.py b/api/repositories/commits.py index 33312e1..26a143f 100644 --- a/api/repositories/commits.py +++ b/api/repositories/commits.py @@ -2,7 +2,7 @@ class Commits(RestClient): - def list_commits_on_repository(self, owner, repo, **kwargs): + def list_commits_on_a_repository(self, owner, repo, **kwargs): """ https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository """ From 35a0ce9feb0c660d90625333616c2ee1cc02c89b Mon Sep 17 00:00:00 2001 From: vlonly Date: Wed, 10 Jul 2019 16:54:04 +0800 Subject: [PATCH 35/55] =?UTF-8?q?=E5=B7=B2=E4=BF=AE=E6=94=B9=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/collaborators.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/api/repositories/collaborators.py b/api/repositories/collaborators.py index f8fba60..0e864f9 100644 --- a/api/repositories/collaborators.py +++ b/api/repositories/collaborators.py @@ -9,27 +9,27 @@ def list_collaborators(self,owner,repo,**kwargs): headlers = {'Accept':'application/vnd.github.hellcat-preview+json'} return self.get('/repos/{}/{}/collaborators'.format(owner, repo), headlers=headlers, **kwargs) - def Check_if_a_user_is_a_collaborator(self,owner,repo,username,**kwargs): + def check_if_a_user_is_a_collaborator(self,owner,repo,username,**kwargs): """ https://developer.github.com/v3/repos/collaborators/#check-if-a-user-is-a-collaborator """ headlers = {'Accept': 'application/vnd.github.hellcat-preview+json'} return self.get('/repos/{}/{}/collaborators/{}'.format(owner,repo,username), headlers=headlers, **kwargs) - def Review_a_user_permission_level(self,owner,repo,username,**kwargs): + def review_a_user_permission_level(self,owner,repo,username,**kwargs): """ https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level - permission: admin, write, read, none + :param kwargs:admin,write,read,none。 """ return self.get('/repos/{}/{}/collaborators/{}/permission'.format(owner,repo,username), **kwargs) - def Add_user_as_a_collaborator(self,owner,repo,username,**kwargs): + def add_user_as_a_collaborator(self,owner,repo,username,**kwargs): """ https://developer.github.com/v3/repos/collaborators/#add-user-as-a-collaborator """ return self.put('/repos/:owner/{}/collaborators/{}'.format(owner,repo,username), **kwargs) - def Remove_user_as_a_collaborator(self,owner,repo,username,**kwargs): + def remove_user_as_a_collaborator(self,owner,repo,username,**kwargs): """ https://developer.github.com/v3/repos/collaborators/#remove-user-as-a-collaborator """ From e761506b6a037622707a0f9639f506fabfe17f34 Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Thu, 11 Jul 2019 15:51:29 +0800 Subject: [PATCH 36/55] =?UTF-8?q?=E6=96=B0=E5=A2=9Edeployments.py,download?= =?UTF-8?q?s.py=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/deployments.py | 49 +++++++++++++++++++++++++++++++++ api/repositories/downloads.py | 21 ++++++++++++++ api/repositories/repos.py | 4 +++ 3 files changed, 74 insertions(+) create mode 100644 api/repositories/deployments.py create mode 100644 api/repositories/downloads.py diff --git a/api/repositories/deployments.py b/api/repositories/deployments.py new file mode 100644 index 0000000..81e4990 --- /dev/null +++ b/api/repositories/deployments.py @@ -0,0 +1,49 @@ +from core.rest_client import RestClient + +class Deployments(RestClient): + + def list_deployments(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/deployments/#list-deployments + """ + headers = {'Accept':'application/vnd.github.ant-man-preview+json'} + return self.get("/repos/{}/{}/deployments".format(owner, repo), headers = headers, **kwargs) + + def get_a_single_deployment(self, owner, repo, deployment_id): + """ + https://developer.github.com/v3/repos/deployments/#get-a-single-deployment + """ + headers = {'Accept':'application/vnd.github.machine-man-preview'} + return self.get("/repos/{}/{}/deployments/{}".format(owner, repo, deployment_id), headers=headers) + + def create_deployment(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/deployments/#create-a-deployment + """ + headers = {'Accept':'application/vnd.github.ant-man-preview+json'} + return self.post("/repos/{}/{}/deployments".format(owner, repo),headers=headers, **kwargs) + + def list_deployment_statuses(self, owner, repo, deployment_id): + """ + https://developer.github.com/v3/repos/deployments/#list-deployment-statuses + """ + headers = {'Accept':'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json'} + return self.get("/repos/{}/{}/deployments/{}/statuses".format(owner, repo, deployment_id),headers=headers) + + def get_a_single_deployment_status(self, owner, repo, deployment_id, status_id): + """ + https://developer.github.com/v3/repos/deployments/#get-a-single-deployment-status + """ + headers = {'Accept':'application/vnd.github.machine-man-preview,' + 'application/vnd.github.flash-preview+json,' + 'application/vnd.github.ant-man-preview+json'} + return self.get("/repos/{}/{}/deployments/{}/statuses/{}",format(owner, repo, deployment_id, status_id),headers=headers) + + def create_a_deployment_status(self, owner, repo, deployment_id, **kwargs): + """ + https://developer.github.com/v3/repos/deployments/#create-a-deployment-status + """ + headers = {'Accept':'application/vnd.github.flash-preview+json,' + 'application/vnd.github.ant-man-preview+json'} + return self.post("/repos/{}/{}/deployments/{}/statuses".format(owner, repo, deployment_id), headers=headers, **kwargs) + diff --git a/api/repositories/downloads.py b/api/repositories/downloads.py new file mode 100644 index 0000000..eb89c13 --- /dev/null +++ b/api/repositories/downloads.py @@ -0,0 +1,21 @@ +from core.rest_client import RestClient + +class Downloads(RestClient): + + def list_downloads_for_a_repository(self, owner, repo): + """ + https://developer.github.com/v3/repos/downloads/#list-downloads-for-a-repository + """ + return self.get("/repos/{}/{}/downloads".format(owner, repo)) + + def get_a_single_downloads(self, owner, repo, download_id): + """ + https://developer.github.com/v3/repos/downloads/#get-a-single-download + """ + return self.get("/repos/{}/{}/downloads/{}".format(owner, repo, download_id)) + + def delete_a_downlaod(self, owner, repo, download_id): + """ + https://developer.github.com/v3/repos/downloads/#delete-a-download + """ + return self.delete("/repos/{}/{}/downloads/{}".format(owner, repo, download_id)) \ No newline at end of file diff --git a/api/repositories/repos.py b/api/repositories/repos.py index 0db58ae..58b089c 100644 --- a/api/repositories/repos.py +++ b/api/repositories/repos.py @@ -11,6 +11,8 @@ from api.repositories.commits import Commits from api.repositories.invitations import Invitations from api.repositories.contents import Contents +from api.repositories.deployments import Deployments +from api.repositories.downloads import Downloads class Repos(RestClient): def __init__(self, api_root_url, **kwargs): @@ -27,6 +29,8 @@ def __init__(self, api_root_url, **kwargs): self.commits = Commits(self.api_root_url, **kwargs ) self.invitations = Invitations(self.api_root_url, **kwargs ) self.contents = Contents(self.api_root_url, **kwargs ) + self.deployments = Deployments(self.api_root_url, **kwargs ) + self.downloads = Downloads(self.api_root_url, **kwargs ) def list_your_repos(self, **kwargs): """ From c98df9a68b4ff307510c05bd817b63a98dc55301 Mon Sep 17 00:00:00 2001 From: Gunnine Date: Wed, 17 Jul 2019 17:33:03 +0800 Subject: [PATCH 37/55] =?UTF-8?q?=E5=AE=8C=E6=88=908.Interactions=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3#543-#549?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/interactions/interactions.py | 14 ++++++++++++++ api/interactions/orgs.py | 27 +++++++++++++++++++++++++++ api/interactions/repos.py | 29 +++++++++++++++++++++++++++++ github.py | 3 +++ 4 files changed, 73 insertions(+) create mode 100644 api/interactions/interactions.py create mode 100644 api/interactions/orgs.py create mode 100644 api/interactions/repos.py diff --git a/api/interactions/interactions.py b/api/interactions/interactions.py new file mode 100644 index 0000000..e70474c --- /dev/null +++ b/api/interactions/interactions.py @@ -0,0 +1,14 @@ +from core.rest_client import RestClient +from api.interactions.orgs import Orgs +from api.interactions.repos import Repos + + +class Interactions(RestClient): + """ + https://developer.github.com/v3/interactions/#interactions + """ + + def __init__(self, api_root_url, **kwargs): + super(Interactions, self).__init__(api_root_url, **kwargs) + self.orgs = Orgs(self.api_root_url, **kwargs) + self.repos = Repos(self.api_root_url, **kwargs) diff --git a/api/interactions/orgs.py b/api/interactions/orgs.py new file mode 100644 index 0000000..912f709 --- /dev/null +++ b/api/interactions/orgs.py @@ -0,0 +1,27 @@ +from core.rest_client import RestClient + + +class Orgs(RestClient): + def __init__(self): + self.headers = {'Accept': 'application/vnd.github.sombra-preview'} + + def get_interactions_limits_for_org(self, org, **kwargs): + """ + https://developer.github.com/v3/interactions/orgs/#get-interaction-restrictions-for-an-organization + :param org: organization name + """ + return self.get('/orgs/{}/interaction-limits'.format(org), headers=self.headers, **kwargs) + + def update_interactions_limits_for_org(self, org, **kwargs): + """ + https://developer.github.com/v3/interactions/orgs#add-or-update-interaction-restrictions-for-an-organization + :param org: organization name + """ + return self.put('/orgs/{}/interaction-limits'.format(org), headers=self.headers, **kwargs) + + def remove_interaction_restrictions_for_org(self, org, **kwargs): + """ + https://developer.github.com/v3/interactions/orgs#remove-interaction-restrictions-for-an-organization + :param org: organization name + """ + return self.delete('/orgs/{}/interaction-limits'.format(org), headers=self.headers, **kwargs) diff --git a/api/interactions/repos.py b/api/interactions/repos.py new file mode 100644 index 0000000..c4fc7c0 --- /dev/null +++ b/api/interactions/repos.py @@ -0,0 +1,29 @@ +from core.rest_client import RestClient + + +class Repos(RestClient): + def __init__(self): + self.headers = {'Accept': 'application/vnd.github.sombra-preview'} + + def get_interaction_restrictions_for_repo(self, owner, **kwargs): + """ + https://developer.github.com/v3/interactions/repos#get-interaction-restrictions-for-a-repository + :param owner: organization owner + """ + return self.get('/repos/{}/:repo/interaction-limits'.format(owner), headers=self.headers, **kwargs) + + def update_interaction_restrictions_for_repo(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/interactions/repos/#add-or-update-interaction-restrictions-for-a-repository + :param owner: organization owner + :param repo: repository + """ + return self.put('/repos/{}/{}/interaction-limits'.format(owner, repo), headers=self.headers, **kwargs) + + def remove_interaction_restrictions_for_repo(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/interactions/repos/#remove-interaction-restrictions-for-a-repository + :param owner: organization owner + :param repo: repository + """ + return self.delete('/repos/{}/{}/interaction-limits'.format(owner, repo), header=self.headers, **kwargs) diff --git a/github.py b/github.py index b5dc7a8..edb7c1c 100644 --- a/github.py +++ b/github.py @@ -1,6 +1,8 @@ from api.repositories.repos import Repos from api.issues.issues import Issues from api.checks.checks import Checks +from api.interactions.interactions import Interactions + class Github(): def __init__(self, **kwargs): @@ -8,3 +10,4 @@ def __init__(self, **kwargs): self.repos = Repos(self.api_root_url, **kwargs) self.issues = Issues(self.api_root_url, **kwargs) self.checks = Checks(self.api_root_url, **kwargs) + self.interactions = Interactions(self.api_root_url, **kwargs) From 67b3eb7c5aea71698508f8d67bbc351e0f425061 Mon Sep 17 00:00:00 2001 From: xctester <269986229@qq.com> Date: Sat, 20 Jul 2019 16:48:48 +0800 Subject: [PATCH 38/55] =?UTF-8?q?=E6=96=B0=E5=A2=9Ecomments.py,pulls.py,re?= =?UTF-8?q?view=5Frequests.py,reviews.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/pulls/comments.py | 42 +++++++++++++++++++ api/pulls/pulls.py | 81 ++++++++++++++++++++++++++++++++++++ api/pulls/review_requests.py | 22 ++++++++++ api/pulls/reviews.py | 52 +++++++++++++++++++++++ 4 files changed, 197 insertions(+) create mode 100644 api/pulls/comments.py create mode 100644 api/pulls/pulls.py create mode 100644 api/pulls/review_requests.py create mode 100644 api/pulls/reviews.py diff --git a/api/pulls/comments.py b/api/pulls/comments.py new file mode 100644 index 0000000..ae8bba0 --- /dev/null +++ b/api/pulls/comments.py @@ -0,0 +1,42 @@ +from core.rest_client import RestClient + +class Comments(RestClient): + + def list_comments_on_a_pull_request(self, owner, repo, pull_number, **kwargs): + """ + https://developer.github.com/v3/pulls/comments/#list-comments-on-a-pull-request + """ + headers = {'Accept':'application/vnd.github.squirrel-girl-preview'} + return self.get('/repos/{}/{}/pulls/{}/comments'.format(owner, repo, pull_number), **kwargs, headers=headers) + + def list_comments_in_a_repository(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/pulls/comments/#list-comments-in-a-repository + """ + headers = {'Accept':'application/vnd.github.squirrel-girl-preview'} + return self.get('/repos//pulls/comments'.format(owner, repo), **kwargs, headers=headers) + + def get_a_single_comment(self, owner, repo, comment_id): + """ + https://developer.github.com/v3/pulls/comments/#get-a-single-comment + """ + headers = {'Accept': 'application/vnd.github.squirrel-girl-preview'} + return self.get('/repos/{}/{}/pulls/comments/{}'.format(owner, repo, comment_id), headers=headers) + + def create_a_comment(self, owner, repo, pull_number, **kwargs): + """ + https://developer.github.com/v3/pulls/comments/#create-a-comment + """ + return self.post('/repos/{}/{}/pulls/{}/comments'.format(owner, repo, pull_number), **kwargs) + + def edit_a_comment(self, owner, repo, comment_id, **kwargs): + """ + https://developer.github.com/v3/pulls/comments/#create-a-comment + """ + return self.patch('/repos/{}/{}/pulls/comments/{}'.format(owner, repo, comment_id), **kwargs) + + def delete_a_comment(self, owner, repo, comment_id): + """ + https://developer.github.com/v3/pulls/comments/#delete-a-comment + """ + return self.delete('/repos/{}/{}/pulls/comments/{}'.format(owner, repo, comment_id)) \ No newline at end of file diff --git a/api/pulls/pulls.py b/api/pulls/pulls.py new file mode 100644 index 0000000..9b7367e --- /dev/null +++ b/api/pulls/pulls.py @@ -0,0 +1,81 @@ +from core.rest_client import RestClient +from api.pulls.comments import Comments +from api.pulls.review_requests import Review_requests +from api.pulls.reviews import Reviews + +class Pulls(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Pulls, self).__init__(api_root_url, **kwargs) + self.comments = Comments(self.api_root_url, **kwargs) + self.review_requests = Review_requests(self.api_root_url, **kwargs) + self.reviews = Reviews(self.api_root_url, **kwargs) + + def list_pull_request(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/pulls/#list-pull-requests + """ + headers = {'Accept':'application/vnd.github.shadow-cat-preview+json,' + 'application/vnd.github.symmetra-preview+json,' + 'application/vnd.github.sailor-v-preview+json'} + return self.get('/repes/{}/{}/pulls'.format(owner, repo), **kwargs, headers = headers) + + def get_a_single_pull_request(self, owner, repo, pull_number): + """ + https://developer.github.com/v3/pulls/#get-a-single-pull-request + """ + headers = {'Accept': 'application/vnd.github.shadow-cat-preview+json,' + 'application/vnd.github.symmetra-preview+json,' + 'application/vnd.github.sailor-v-preview+json'} + return self.get('/repes/{}/{}/pulls/{}'.format(owner, repo, pull_number), headers = headers) + + def create_a_pull_request(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/pulls/#create-a-pull-request + """ + headers = {'Accept': 'application/vnd.github.shadow-cat-preview+json,' + 'application/vnd.github.symmetra-preview+json,' + 'application/vnd.github.sailor-v-preview+json'} + + return self.post('/repos/{}/{}/pulls'.format(owner, repo),**kwargs, headers=headers) + + def update_a_pull_request_branch(self, owner, repo, pull_number, **kwargs): + """ + https://developer.github.com/v3/pulls/#update-a-pull-request-branch + """ + headers={'Accept':'application/vnd.github.lydian-preview+json'} + return self.put('/repos/{}/{}/pulls/{}/update-branch'.format(owner, repo, pull_number),**kwargs, headers=headers) + + def update_a_pull_request(self, owner, repo, pull_number, **kwargs): + """ + https://developer.github.com/v3/pulls/#update-a-pull-request + """ + headers = {'Accept': 'application/vnd.github.shadow-cat-preview+json,' + 'application/vnd.github.symmetra-preview+json,' + 'application/vnd.github.sailor-v-preview+json'} + return self.patch('/repos/{}/{}/pulls/{}'.format(owner, repo, pull_number), **kwargs, headers = headers) + + def list_a_commits_on_a_pull_request(self, owner ,repo, pull_number): + """ + https://developer.github.com/v3/pulls/#list-commits-on-a-pull-request + """ + return self.get('/repos/{}/{}/pulls/{}/commits'.format(owner, repo, pull_number)) + + def list_pull_requests_files(self, owner, repo, pull_number): + """ + https://developer.github.com/v3/pulls/#list-commits-on-a-pull-request + """ + return self.get('/repos/{}/{}/pulls/{}/files'.format(owner, repo, pull_number)) + + def get_a_if_pull_request_has_been_merged(self, owner, repo, pull_number): + """ + https://developer.github.com/v3/pulls/#get-if-a-pull-request-has-been-merged + """ + return self.get('/repos/{}/{}/pulls/{}/merge'.format(owner, repo, pull_number)) + + def merged_a_pull_request(self, owner, repo, pull_number, **kwargs): + """ + https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button + """ + return self.put('/repos/{}/{}/pulls/{}/merge'.format(owner, repo, pull_number), **kwargs) + + diff --git a/api/pulls/review_requests.py b/api/pulls/review_requests.py new file mode 100644 index 0000000..0375636 --- /dev/null +++ b/api/pulls/review_requests.py @@ -0,0 +1,22 @@ +from core.rest_client import RestClient + +class Review_requests(RestClient): + + def list_review_request(self, owner, repo, pull_number): + """ + https://developer.github.com/v3/pulls/review_requests/#list-review-requests + """ + return self.get('/repos/{}/{}/pulls/{}/requested_reviewers'.format(owner, repo, pull_number)) + + def create_a_review_request(self, owner, repo, pull_number): + """ + https://developer.github.com/v3/pulls/review_requests/#create-a-review-request + """ + headers = {'Accept':'application/vnd.github.symmetra-preview+json'} + return self.post('/repos/{}/{}/pulls/{}/requested_reviewers'.format(owner, repo, pull_number),headers = headers) + + def delete_a_review_request(self, owner, repo, pull_number): + """ + https://developer.github.com/v3/pulls/review_requests/#delete-a-review-request + """ + return self.delete('/repos/{}/{}/pulls/{}/requested_reviewers'.format(owner, repo, pull_number)) diff --git a/api/pulls/reviews.py b/api/pulls/reviews.py new file mode 100644 index 0000000..8c836ea --- /dev/null +++ b/api/pulls/reviews.py @@ -0,0 +1,52 @@ +from core.rest_client import RestClient + +class Reviews(RestClient): + + def list_reviews_on_a_pull_request(self, owner, repo, pull_number): + """ + https://developer.github.com/v3/pulls/reviews/#list-reviews-on-a-pull-request + """ + return self.get('/repos/{}/{}/pulls/{}/reviews'.format(owner, repo, pull_number)) + + def get_a_single_review(self, owner, repo, pull_number, review_id): + """ + https://developer.github.com/v3/pulls/reviews/#get-a-single-review + """ + return self.get('/repos/{}/{}/pulls/{}/reviews/{}'.format(owner, repo, pull_number, review_id)) + + def delete_a_pending_review(self, owner, repo, pull_number, review_id): + """ + https://developer.github.com/v3/pulls/reviews/#delete-a-pending-review + """ + return self.delete('/repos/{}/{}/pulls/{}/reviews/{}'.format(owner, repo, pull_number, review_id)) + + def get_a_comments_for_a_single_review(self, owner, repo, pull_number, review_id): + """ + https://developer.github.com/v3/pulls/reviews/#delete-a-pending-review + """ + return self.get('/repos/{}/{}/pulls/{}/reviews/{}/comments'.format(owner, repo, pull_number, review_id)) + + def create_a_pull_request_review(self, owner, repo, pull_number, **kwargs): + """ + https://developer.github.com/v3/pulls/reviews/#create-a-pull-request-review + """ + headers = {'Accept':'application/vnd.github.v3.diff'} + return self.post('/repos/{}/{}/pu lls/{}/reviews'.format(owner, repo, pull_number), **kwargs, headers =headers) + + def update_a_pull_request_review(self, owner, repo, pull_number, review_id, **kwargs): + """ + https://developer.github.com/v3/pulls/reviews/#update-a-pull-request-review + """ + return self.put('/repos/{}/{}/pulls/{}/reviews/{}'.format(owner, repo, pull_number, review_id), **kwargs) + + def submit_a_pull_request_review(self, owner, repo, pull_number, review_id, **kwargs): + """ + https://developer.github.com/v3/pulls/reviews/#submit-a-pull-request-review + """ + return self.post("/repos/{}/{}/pulls/{}/reviews/{}/events".format(owner, repo, pull_number, review_id), **kwargs) + + def dismiss_a_pull_request_review(self, owner, repo, pull_number, review_id, **kwargs): + """ + https://developer.github.com/v3/pulls/reviews/#dismiss-a-pull-request-review + """ + return self.put("/repos/{}/{}/pulls/{}/reviews/{}/dismissals".format(owner, repo, pull_number, review_id), **kwargs) \ No newline at end of file From 506cc46109bbe4745ba8001664703558115266be Mon Sep 17 00:00:00 2001 From: ChenWanyu_work <1340863862@qq.com> Date: Wed, 15 Apr 2020 18:12:13 +0800 Subject: [PATCH 39/55] Add reactions_1 --- api/reactions/reactions.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 api/reactions/reactions.py diff --git a/api/reactions/reactions.py b/api/reactions/reactions.py new file mode 100644 index 0000000..4ba7865 --- /dev/null +++ b/api/reactions/reactions.py @@ -0,0 +1,14 @@ +from core.rest_client import RestClient + + +class Reactioons(RestClient): + def list_reactions_for_a_commit_comment(self, owner, repo, comments,**kwargs): + """ + https://developer.github.com/v3/reactions/#list-reactions-for-a-commit-comment + :param owner: + :param repo: + :param comments: + :param kwargs: + :return: + """ + return self.get("/repos/{}/{}/comments/{}/reactions".format(owner, repo,comments), **kwargs) From 4832523e1a50cb9648e6ea4fb5ac556d14be9bb5 Mon Sep 17 00:00:00 2001 From: unknown <1014422757@qq.com> Date: Sat, 25 Apr 2020 12:15:47 +0800 Subject: [PATCH 40/55] =?UTF-8?q?=E5=88=9B=E5=BB=BAapps=E5=92=8Cinstallati?= =?UTF-8?q?ons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/apps/apps.py | 21 +++++++++++++++++++++ api/apps/installactions.py | 21 +++++++++++++++++++++ github.py | 4 +++- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 api/apps/apps.py create mode 100644 api/apps/installactions.py diff --git a/api/apps/apps.py b/api/apps/apps.py new file mode 100644 index 0000000..a0fb921 --- /dev/null +++ b/api/apps/apps.py @@ -0,0 +1,21 @@ +from core.rest_client import RestClient +from api.apps.installactions import Installation + + +class Apps(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Apps, self).__init__(api_root_url, **kwargs) + self.installaction = Installation(self.api_root_url, **kwargs) + + def create_gitHub_app_from_a_manifest(self, code, **kwargs): + """ + https://developer.github.com/v3/apps/#create-a-github-app-from-a-manifest + """ + return self.post("/app-manifests/{}/conversions".format(code), **kwargs) + + def get_a_user_installation(self, username, **kwargs): + """ + https://developer.github.com/v3/apps/#get-a-user-installation + """ + header = {'Accept': 'application/vnd.github.machine-man-preview+json'} + return self.get("/users/{}/installation".format(username), **kwargs) diff --git a/api/apps/installactions.py b/api/apps/installactions.py new file mode 100644 index 0000000..50a7c76 --- /dev/null +++ b/api/apps/installactions.py @@ -0,0 +1,21 @@ +from core.rest_client import RestClient + + +class Installation(RestClient): + def list_repositories(self, **kwargs): + """ + https://developer.github.com/v3/apps/installations/#list-repositories + :param kwargs: + :return: + """ + header = {'Accept': 'application/vnd.github.machine-man-preview+json'} + return self.get("/installation/repositories", headers=header, **kwargs) + + def list_installations_for_a_user(self, **kwargs): + """ + https://developer.github.com/v3/apps/installations/#list-installations-for-a-user + :param kwargs: + :return: + """ + header = {'Accept': 'application/vnd.github.machine-man-preview+json'} + return self.get("/user/installations", headers=header, **kwargs) \ No newline at end of file diff --git a/github.py b/github.py index edb7c1c..d64abc3 100644 --- a/github.py +++ b/github.py @@ -2,7 +2,7 @@ from api.issues.issues import Issues from api.checks.checks import Checks from api.interactions.interactions import Interactions - +from api.apps.apps import Apps class Github(): def __init__(self, **kwargs): @@ -11,3 +11,5 @@ def __init__(self, **kwargs): self.issues = Issues(self.api_root_url, **kwargs) self.checks = Checks(self.api_root_url, **kwargs) self.interactions = Interactions(self.api_root_url, **kwargs) + self.apps = Apps(self.api_root_url, **kwargs) + From ef39a604e04d1c0e8a6b7d0b48b44c6debad88e9 Mon Sep 17 00:00:00 2001 From: unknown <1014422757@qq.com> Date: Sat, 25 Apr 2020 12:37:00 +0800 Subject: [PATCH 41/55] =?UTF-8?q?=E4=BF=AE=E6=94=B9apps.py=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/apps/apps.py | 4 ++-- api/apps/installactions.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/api/apps/apps.py b/api/apps/apps.py index a0fb921..da3a787 100644 --- a/api/apps/apps.py +++ b/api/apps/apps.py @@ -17,5 +17,5 @@ def get_a_user_installation(self, username, **kwargs): """ https://developer.github.com/v3/apps/#get-a-user-installation """ - header = {'Accept': 'application/vnd.github.machine-man-preview+json'} - return self.get("/users/{}/installation".format(username), **kwargs) + headers = {'Accept': 'application/vnd.github.machine-man-preview+json'} + return self.get("/users/{}/installation".format(username), headers=headers, **kwargs) diff --git a/api/apps/installactions.py b/api/apps/installactions.py index 50a7c76..9cbc497 100644 --- a/api/apps/installactions.py +++ b/api/apps/installactions.py @@ -8,8 +8,8 @@ def list_repositories(self, **kwargs): :param kwargs: :return: """ - header = {'Accept': 'application/vnd.github.machine-man-preview+json'} - return self.get("/installation/repositories", headers=header, **kwargs) + headers = {'Accept': 'application/vnd.github.machine-man-preview+json'} + return self.get("/installation/repositories", headers=headers, **kwargs) def list_installations_for_a_user(self, **kwargs): """ @@ -17,5 +17,5 @@ def list_installations_for_a_user(self, **kwargs): :param kwargs: :return: """ - header = {'Accept': 'application/vnd.github.machine-man-preview+json'} - return self.get("/user/installations", headers=header, **kwargs) \ No newline at end of file + headers = {'Accept': 'application/vnd.github.machine-man-preview+json'} + return self.get("/user/installations", headers=headers, **kwargs) \ No newline at end of file From c8c184abf1c991fe88f284ce6dc1643320862879 Mon Sep 17 00:00:00 2001 From: unknown <1014422757@qq.com> Date: Sat, 25 Apr 2020 22:33:51 +0800 Subject: [PATCH 42/55] =?UTF-8?q?=E5=AE=8C=E6=88=90#563=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/apps/installactions.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/api/apps/installactions.py b/api/apps/installactions.py index 9cbc497..a039858 100644 --- a/api/apps/installactions.py +++ b/api/apps/installactions.py @@ -18,4 +18,12 @@ def list_installations_for_a_user(self, **kwargs): :return: """ headers = {'Accept': 'application/vnd.github.machine-man-preview+json'} - return self.get("/user/installations", headers=headers, **kwargs) \ No newline at end of file + return self.get("/user/installations", headers=headers, **kwargs) + + def add_repository_to_installation(self, installation_id, repository_id, **kwargs): + """ + https://developer.github.com/v3/apps/installations/#add-repository-to-installation + """ + headers = {'Accept': 'application/vnd.github.machine-man-preview+json'} + return self.put("/user/installations/{}/repositories/{}".format(installation_id, repository_id), headers = headers, **kwargs) + From 5b2f7217a8fd5010655183c5114d0b203b480f22 Mon Sep 17 00:00:00 2001 From: namelaowang <1014422757@qq.com> Date: Sun, 26 Apr 2020 14:41:38 +0800 Subject: [PATCH 43/55] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=9C=80=E6=B1=82502?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/issues/issues.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/api/issues/issues.py b/api/issues/issues.py index 892e955..59470de 100644 --- a/api/issues/issues.py +++ b/api/issues/issues.py @@ -8,3 +8,12 @@ def create_issue(self, owner, repo, **kwargs): https://developer.github.com/v3/issues/#create-an-issue """ return self.post("/repos/{}/{}/issues".format(owner, repo), **kwargs) + + def list_issue(self, **kwargs): + """ + https://developer.github.com/v3/issues/#list-issues + """ + header = {'Accept': 'application/vnd.github.machine-man-preview'} + return self.get("/issues", headers=header, **kwargs) + + From e00ea436efdbba9999b98b61af6070b559ff042a Mon Sep 17 00:00:00 2001 From: namelaowang <1014422757@qq.com> Date: Thu, 30 Apr 2020 16:36:24 +0800 Subject: [PATCH 44/55] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=9C=80=E6=B1=82#131?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/repositories/repositories.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/api/repositories/repositories.py b/api/repositories/repositories.py index 31c735e..ce09f96 100644 --- a/api/repositories/repositories.py +++ b/api/repositories/repositories.py @@ -40,6 +40,12 @@ def transfer_a_repository(self, owner, repo, **kwargs): headers = {'Accept':'application/vnd.github.nightshade-preview+json'} return self.delete('/repos/{}/{}/transfer'.format(owner, repo), headers = headers ,**kwargs) + def list_teams(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/repos/#list-teams + """ + return self.get("/repos/{}/{}/teams".format(owner, repo), **kwargs) + From e04ea8138f8a86d40e1ad4d62a8348219e58fc0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98Chenwanyu=5Fjiawei=E2=80=99?= <‘1340863862@qq.com’> Date: Wed, 6 May 2020 14:05:29 +0800 Subject: [PATCH 45/55] fix #361 reactions's comment_id --- api/reactions/reactions.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/api/reactions/reactions.py b/api/reactions/reactions.py index 4ba7865..d18402c 100644 --- a/api/reactions/reactions.py +++ b/api/reactions/reactions.py @@ -1,14 +1,10 @@ from core.rest_client import RestClient -class Reactioons(RestClient): - def list_reactions_for_a_commit_comment(self, owner, repo, comments,**kwargs): +class Reactions(RestClient): + + def list_reactions_for_a_commit_comment(self, owner, repo, comment_id, **kwargs): """ https://developer.github.com/v3/reactions/#list-reactions-for-a-commit-comment - :param owner: - :param repo: - :param comments: - :param kwargs: - :return: """ - return self.get("/repos/{}/{}/comments/{}/reactions".format(owner, repo,comments), **kwargs) + return self.get("/repos/{}/{}/comments/{}/reactions".format(owner, repo, comment_id), **kwargs) From 9530b7f19df44871e5ca811c78070f6ceec4928a Mon Sep 17 00:00:00 2001 From: colorq Date: Tue, 23 Jun 2020 23:37:56 +0800 Subject: [PATCH 46/55] add test.txt --- test.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..e69de29 From 751f3282249bb8e69369a01c9d776d52b532d331 Mon Sep 17 00:00:00 2001 From: colorq Date: Tue, 23 Jun 2020 23:39:22 +0800 Subject: [PATCH 47/55] remove test.txt --- test.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test.txt diff --git a/test.txt b/test.txt deleted file mode 100644 index e69de29..0000000 From f44b111c2e89d1832384fe92a19ae8928de90b9e Mon Sep 17 00:00:00 2001 From: colorq Date: Tue, 23 Jun 2020 23:41:24 +0800 Subject: [PATCH 48/55] add test.txt --- test.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..e69de29 From 27dcff11c07f66648a27c4ac669a89b3e15a80dd Mon Sep 17 00:00:00 2001 From: colorq Date: Tue, 23 Jun 2020 23:43:33 +0800 Subject: [PATCH 49/55] remove test.txt --- test.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test.txt diff --git a/test.txt b/test.txt deleted file mode 100644 index e69de29..0000000 From dcfd8e24b67c98bca3588ccb44c4c8ff07bb159c Mon Sep 17 00:00:00 2001 From: colorq Date: Wed, 24 Jun 2020 08:55:46 +0800 Subject: [PATCH 50/55] add a func --- api/apps/apps.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api/apps/apps.py b/api/apps/apps.py index da3a787..b86ef5c 100644 --- a/api/apps/apps.py +++ b/api/apps/apps.py @@ -19,3 +19,6 @@ def get_a_user_installation(self, username, **kwargs): """ headers = {'Accept': 'application/vnd.github.machine-man-preview+json'} return self.get("/users/{}/installation".format(username), headers=headers, **kwargs) + + def pa(self): + pass From f88ebc9fbda4490fc3fbc63f648f40b49e9b6fb6 Mon Sep 17 00:00:00 2001 From: colorq Date: Wed, 24 Jun 2020 08:58:29 +0800 Subject: [PATCH 51/55] reset --- api/apps/apps.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/api/apps/apps.py b/api/apps/apps.py index b86ef5c..da3a787 100644 --- a/api/apps/apps.py +++ b/api/apps/apps.py @@ -19,6 +19,3 @@ def get_a_user_installation(self, username, **kwargs): """ headers = {'Accept': 'application/vnd.github.machine-man-preview+json'} return self.get("/users/{}/installation".format(username), headers=headers, **kwargs) - - def pa(self): - pass From 64f4aaaaa0f3ecf0df867d4070fe3fef8b4b5b52 Mon Sep 17 00:00:00 2001 From: colorq Date: Wed, 24 Jun 2020 12:21:00 +0800 Subject: [PATCH 52/55] add api/issues/events.py --- .idea/TUGithubAPI.iml | 8 +++ .idea/inspectionProfiles/Project_Default.xml | 49 +++++++++++++++++++ .../inspectionProfiles/profiles_settings.xml | 6 +++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 6 +++ api/issues/events.py | 30 ++++++++++++ api/issues/issues.py | 5 ++ 7 files changed, 112 insertions(+) create mode 100644 .idea/TUGithubAPI.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 api/issues/events.py diff --git a/.idea/TUGithubAPI.iml b/.idea/TUGithubAPI.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/.idea/TUGithubAPI.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..1a258ce --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,49 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..51331de --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/api/issues/events.py b/api/issues/events.py new file mode 100644 index 0000000..e596d46 --- /dev/null +++ b/api/issues/events.py @@ -0,0 +1,30 @@ +from core.rest_client import RestClient + + +class Events(RestClient): + def list_events_for_an_issue(self, owner, repo, issue_number, **kwargs): + """ + https://developer.github.com/v3/issues/events/#list-events-for-an-issue + """ + headers = {'Accept': 'application/vnd.github.starfox-preview+json,' + 'application/vnd.github.sailor-v-preview+json'} + return self.get('/repos/{}/{}/issues/{}/events'.format(owner, repo, issue_number), **kwargs, headers = headers) + + + def list_events_for_a_repository(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/issues/events/#list-issue-events-for-a-repository + """ + headers = {'Accept': 'application/vnd.github.starfox-preview+json,' + 'application/vnd.github.sailor-v-preview+json'} + return self.get('/repos/{}/{}/issues/events'.format(owner, repo), **kwargs, headers = headers) + + def get_a_single_event(self, owner, repo, event_id, **kwargs): + """ + https://developer.github.com/v3/issues/events/#get-an-issue-event + """ + headers = {'Accept': 'application/vnd.github.starfox-preview+json,' + 'application/vnd.github.machine-man-preview,' + 'application/vnd.github.sailor-v-preview+json'} + return self.get('/repos/{}/{}/issues/events/{}'.format(owner, repo, event_id), **kwargs, headers = headers) + diff --git a/api/issues/issues.py b/api/issues/issues.py index 59470de..308f774 100644 --- a/api/issues/issues.py +++ b/api/issues/issues.py @@ -1,8 +1,13 @@ from core.rest_client import RestClient +from api.issues.events import Events class Issues(RestClient): + def __init__(self, api_root_url, **kwargs): + super(Issues, self).__init__(api_root_url, **kwargs) + self.event = Events(self.api_root_url, **kwargs) + def create_issue(self, owner, repo, **kwargs): """ https://developer.github.com/v3/issues/#create-an-issue From 57429739c3d91a00f6343c794381c712d3f0c286 Mon Sep 17 00:00:00 2001 From: colorq Date: Wed, 24 Jun 2020 20:38:52 +0800 Subject: [PATCH 53/55] delete .idea --- .idea/TUGithubAPI.iml | 8 --- .idea/inspectionProfiles/Project_Default.xml | 49 ------------------- .../inspectionProfiles/profiles_settings.xml | 6 --- .idea/modules.xml | 8 --- .idea/vcs.xml | 6 --- 5 files changed, 77 deletions(-) delete mode 100644 .idea/TUGithubAPI.iml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.idea/TUGithubAPI.iml b/.idea/TUGithubAPI.iml deleted file mode 100644 index d0876a7..0000000 --- a/.idea/TUGithubAPI.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 1a258ce..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 51331de..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 7946e82a850743ff113c908bc776656676e19bc3 Mon Sep 17 00:00:00 2001 From: colorq Date: Sun, 28 Jun 2020 11:35:05 +0800 Subject: [PATCH 54/55] add api/checks/runs.py --- api/checks/runs.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/api/checks/runs.py b/api/checks/runs.py index a5d0dca..2a863e5 100644 --- a/api/checks/runs.py +++ b/api/checks/runs.py @@ -9,3 +9,41 @@ def list_check_runs(self, owner, repo, ref, **kwargs): """ headers = {'Accept': 'application/vnd.github.antiope-preview+json'} return self.get("/repos/{}/{}/commits/{}/check-runs".format(owner, repo, ref), headers=headers, **kwargs) + + def create_a_check_runs(self, owner, repo, **kwargs): + """ + https://developer.github.com/v3/checks/runs/#create-a-check-run + """ + headers = {'Accept': 'application/vnd.github.antiope-preview+json'} + return self.post('/repos/{}/{}/check-runs'.format(owner, repo), headers = headers, **kwargs) + + def updata_a_check_runs(self, owner, repo, check_run_id, **kwargs): + """ + https://developer.github.com/v3/checks/runs/#update-a-check-run + """ + headers = {'Accept': 'application/vnd.github.antiope-preview+json'} + return self.patch('/repos/{}/{}/check-runs/{}'.format(owner, repo, check_run_id), headers = headers, **kwargs) + + def list_check_runs_in_a_check_suite(self, owner, repo, check_suite_id, **kwargs): + """ + https://developer.github.com/v3/checks/runs/#list-check-runs-in-a-check-suite + """ + headers = {'Accept': 'application/vnd.github.antiope-preview+json'} + return self.get('/repos/{}/{}/check-suites/{}/check-runs'.format(owner, repo, check_suite_id), headers = headers, **kwargs) + + def get_a_single_check_run(self, owner, repo, check_run_id, **kwargs): + """ + https://developer.github.com/v3/checks/runs/#get-a-check-run + """ + headers = {'Accept': 'application/vnd.github.antiope-preview+json'} + return self.get('/repos/:owner/:repo/check-runs/:check_run_id'.format(owner, repo, check_run_id), headers = headers, **kwargs) + + def list_annotations_for_a_check_run(self, owner, repo, check_run_id, **kwargs): + """ + https://developer.github.com/v3/checks/runs/#list-check-run-annotations + """ + headers = {'Accept': 'application/vnd.github.antiope-preview+json'} + return self.get('/repos/:owner/:repo/check-runs/:check_run_id/annotations'.format(owner, repo, check_run_id), headers = headers, **kwargs) + + + From 7763a95101170a5388c41b2a4da039eb01946061 Mon Sep 17 00:00:00 2001 From: colorq Date: Sun, 28 Jun 2020 11:50:52 +0800 Subject: [PATCH 55/55] modify runs.py --- api/checks/runs.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/checks/runs.py b/api/checks/runs.py index 2a863e5..97616b9 100644 --- a/api/checks/runs.py +++ b/api/checks/runs.py @@ -36,14 +36,14 @@ def get_a_single_check_run(self, owner, repo, check_run_id, **kwargs): https://developer.github.com/v3/checks/runs/#get-a-check-run """ headers = {'Accept': 'application/vnd.github.antiope-preview+json'} - return self.get('/repos/:owner/:repo/check-runs/:check_run_id'.format(owner, repo, check_run_id), headers = headers, **kwargs) + return self.get('/repos/{}/{}/check-runs/{}'.format(owner, repo, check_run_id), headers = headers, **kwargs) def list_annotations_for_a_check_run(self, owner, repo, check_run_id, **kwargs): """ https://developer.github.com/v3/checks/runs/#list-check-run-annotations """ headers = {'Accept': 'application/vnd.github.antiope-preview+json'} - return self.get('/repos/:owner/:repo/check-runs/:check_run_id/annotations'.format(owner, repo, check_run_id), headers = headers, **kwargs) - + return self.get('/repos/{}/{}/check-runs/{}/annotations'.format(owner, repo, check_run_id), headers = headers, **kwargs) +