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 1/3] =?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 2/3] 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 3/3] 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)