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 new file mode 100644 index 0000000..f678b79 --- /dev/null +++ b/api/repositories/releases.py @@ -0,0 +1,75 @@ +from core.rest_client import RestClient + + +class Releases(RestClient): + 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) 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 new file mode 100644 index 0000000..3943c39 --- /dev/null +++ b/api/repositories/traffic.py @@ -0,0 +1,30 @@ +from core.rest_client import RestClient + + +class Traffic(RestClient): + + 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..756a8e9 100644 --- a/github.py +++ b/github.py @@ -7,3 +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) + +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)