def __init__(self, username=None, api_token=None, requests_per_second=None, access_token=None, cache=None, proxy_host=None, proxy_port=8080, github_url=None): """ An interface to GitHub's API: http://developer.github.com/ .. versionadded:: 0.2.0 The ``requests_per_second`` parameter .. versionadded:: 0.3.0 The ``cache`` and ``access_token`` parameters .. versionadded:: 0.4.0 The ``proxy_host`` and ``proxy_port`` parameters :param str username: your own GitHub username. :param str api_token: can be found at https://github.com/account (while logged in as that user): :param str access_token: can be used when no ``username`` and/or ``api_token`` is used. The ``access_token`` is the OAuth access token that is received after successful OAuth authentication. :param float requests_per_second: indicate the API rate limit you're operating under (1 per second per GitHub at the moment), or None to disable delays. The default is to disable delays (for backwards compatibility). :param str cache: a directory for caching GitHub responses. :param str proxy_host: the hostname for the HTTP proxy, if needed. :param str proxy_port: the hostname for the HTTP proxy, if needed (will default to 8080 if a proxy_host is set and no port is set). """ self.request = GithubRequest(username=username, api_token=api_token, requests_per_second=requests_per_second, access_token=access_token, cache=cache, proxy_host=proxy_host, proxy_port=proxy_port, github_url=github_url) self.issues = Issues(self.request) self.users = Users(self.request) self.repos = Repositories(self.request) self.commits = Commits(self.request) self.organizations = Organizations(self.request) self.teams = Teams(self.request) self.pull_requests = PullRequests(self.request)
class Github(object): def __init__(self, username=None, api_token=None, requests_per_second=None, access_token=None, cache=None, proxy_host=None, proxy_port=8080, github_url=None): """ An interface to GitHub's API: http://developer.github.com/ .. versionadded:: 0.2.0 The ``requests_per_second`` parameter .. versionadded:: 0.3.0 The ``cache`` and ``access_token`` parameters .. versionadded:: 0.4.0 The ``proxy_host`` and ``proxy_port`` parameters :param str username: your own GitHub username. :param str api_token: can be found at https://github.com/account (while logged in as that user): :param str access_token: can be used when no ``username`` and/or ``api_token`` is used. The ``access_token`` is the OAuth access token that is received after successful OAuth authentication. :param float requests_per_second: indicate the API rate limit you're operating under (1 per second per GitHub at the moment), or None to disable delays. The default is to disable delays (for backwards compatibility). :param str cache: a directory for caching GitHub responses. :param str proxy_host: the hostname for the HTTP proxy, if needed. :param str proxy_port: the hostname for the HTTP proxy, if needed (will default to 8080 if a proxy_host is set and no port is set). """ self.request = GithubRequest(username=username, api_token=api_token, requests_per_second=requests_per_second, access_token=access_token, cache=cache, proxy_host=proxy_host, proxy_port=proxy_port, github_url=github_url) self.issues = Issues(self.request) self.users = Users(self.request) self.repos = Repositories(self.request) self.commits = Commits(self.request) self.organizations = Organizations(self.request) self.teams = Teams(self.request) self.pull_requests = PullRequests(self.request) def project_for_user_repo(self, user, repo): """Return Github identifier for a user's repository :param str user: repository owner :param str repo: repository name """ return "/".join([user, repo]) def get_all_blobs(self, project, tree_sha): """Get a list of all blobs for a specific tree .. versionadded:: 0.3.0 :param str project: GitHub project :param str tree_sha: object ID of tree """ blobs = self.request.get("blob/all", project, tree_sha) return blobs.get("blobs") def get_blob_info(self, project, tree_sha, path): """Get the blob for a file within a specific tree :param str project: GitHub project :param str tree_sha: object ID of tree :param str path: path within tree to fetch blob for """ blob = self.request.get("blob/show", project, tree_sha, path) return blob.get("blob") def get_tree(self, project, tree_sha): """Get tree information for a specifc tree :param str project: GitHub project :param str tree_sha: object ID of tree """ tree = self.request.get("tree/show", project, tree_sha) return tree.get("tree", []) def get_network_meta(self, project): """Get Github metadata associated with a project :param str project: GitHub project """ return self.request.raw_request("/".join([self.request.github_url, project, "network_meta"]), {}) def get_network_data(self, project, nethash, start=None, end=None): """Get chunk of Github network data :param str project: GitHub project :param str nethash: identifier provided by ``get_network_meta`` :param int start: optional start point for data :param int stop: optional end point for data """ data = {"nethash": nethash} if start: data["start"] = start if end: data["end"] = end return self.request.raw_request("/".join([self.request.github_url, project, "network_data_chunk"]), data)