Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions api/issues/issues.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
"""
Expand Down
75 changes: 75 additions & 0 deletions api/repositories/releases.py
Original file line number Diff line number Diff line change
@@ -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)
9 changes: 8 additions & 1 deletion api/repositories/repos.py
Original file line number Diff line number Diff line change
@@ -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):
"""
Expand Down
24 changes: 11 additions & 13 deletions api/repositories/statistics.py
Original file line number Diff line number Diff line change
@@ -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)
15 changes: 7 additions & 8 deletions api/repositories/statuses.py
Original file line number Diff line number Diff line change
@@ -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)
return self.get("/repos/{}/{}/commits/{}/status".format(owner, repo, ref), **kwargs)
30 changes: 30 additions & 0 deletions api/repositories/traffic.py
Original file line number Diff line number Diff line change
@@ -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)
14 changes: 14 additions & 0 deletions github.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)