# vim:expandtab ts=4 sw=4 ft=python import json import requests class IssueManager(object): def __init__(self, username, password, repo_owner, repo): self._auth_pair = (username, password) self.issues_url = ( "https://api.github.com/repos/{repo_owner}/{repo}/issues" .format(**locals()) ) self.milestones_url = ( "https://api.github.com/repos/{repo_owner}/{repo}/milestones" .format(**locals()) ) def _do_request(self, url): data = requests.get(url, auth=self._auth_pair) if data.status_code != 200: raise Exception( "Error {data.status_code}: {data.content}".format(data=data)) return json.loads(data.content) def list_issues(self): return self._do_request(self.issues_url) def get_issue(self, issue_id): url = "{0}/{1}".format(self.issues_url, issue_id) return self._do_request(url) def list_milestones(self): return self._do_request(self.milestones_url) def list_issues_in_milestone(self, milestone_number): url = "{0}?milestone={1:d}".format(self.issues_url, milestone_number) return self._do_request(url)