From 3c8ce09e0e1f13cfc09553e8f51a63809a99ef02 Mon Sep 17 00:00:00 2001 From: Mike Crute Date: Sun, 5 Jun 2011 12:25:28 -0400 Subject: Updating to use classes and the requests library --- pygithubissues/__init__.py | 138 ++++++++++----------------------------------- 1 file changed, 29 insertions(+), 109 deletions(-) diff --git a/pygithubissues/__init__.py b/pygithubissues/__init__.py index fd8bf94..d077dea 100644 --- a/pygithubissues/__init__.py +++ b/pygithubissues/__init__.py @@ -1,123 +1,43 @@ -# vim: set expandtab ts=4 sw=4 filetype=python: - -""" -This will likely be rewritten into something with classes. -""" +# vim:expandtab ts=4 sw=4 ft=python import json -import logging -import subprocess - -def setup_logging(): - - log = logging.getLogger('pygithubissues') - h = logging.StreamHandler() - f = logging.Formatter("%(levelname)s %(asctime)s %(message)s") - h.setFormatter(f) - log.addHandler(h) - - return log - -log = setup_logging() - - -def list_issues_for_repo(username, password, repo_owner, repo): - - """ - Does this:: - - curl -u "username:password" \\ - https://api.github.com/repos/repo_owner/repo/issues - - """ - - auth_option = '%s:%s' % (username, password) - - url = ('https://api.github.com/repos/%s/%s/issues' - % (repo_owner, repo)) - - args = ['curl', '-u', auth_option, url] - - p = subprocess.Popen(args, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - - results = p.communicate() - - return json.loads(results[0]) - -def get_a_single_issue(username, password, repo_owner, repo, issue_id): - - """ - Does this:: - - curl -u "username:password" \\ - https://api.github.com/repos/:repo_owner/:repo/issues/:issue_id - - """ - - auth_option = '%s:%s' % (username, password) - - url = ('https://api.github.com/repos/%s/%s/issues/%s' - % (repo_owner, repo, issue_id)) - - args = ['curl', '-u', auth_option, url] - - p = subprocess.Popen(args, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - - results = p.communicate() - - return json.loads(results[0]) - - - -def list_milestones_for_repo(username, password, repo_owner, repo): - - """ - Does this:: - - curl -u "{username}:{password}" \\ - https://api.github.com/repos/{repo_owner}/{repo}/milestones - - """ - - auth_option = '%s:%s' % (username, password) - - url = ('https://api.github.com/repos/%s/%s/milestones' - % (repo_owner, repo)) - - args = ['curl', '-u', auth_option, url] - - p = subprocess.Popen(args, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - - results = p.communicate() +import requests - return json.loads(results[0]) +class IssueManager(object): -def list_issues_in_milestone(username, password, repo_owner, repo, - milestone_number): + def __init__(self, username, password, repo_owner, repo): + self._auth_pair = (username, password) - """ - Does this:: + self.issues_url = ( + "https://api.github.com/repos/{repo_owner}/{repo}/issues" + .format(**locals()) + ) - curl -u "username:password" \\ - https://api.github.com/repos/repo_owner/repo/issues \\ - ?milestone={milestone_number} + 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) - auth_option = '%s:%s' % (username, password) + if data.status_code != 200: + raise Exception( + "Error {data.status_code}: {data.content}".format(data=data)) - url = ('https://api.github.com/repos/%s/%s/issues?milestone=%s' - % (repo_owner, repo, milestone_number)) + return json.loads(data.content) - args = ['curl', '-u', auth_option, url] + def list_issues(self): + return self._do_request(self.issues_url) - p = subprocess.Popen(args, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) + def get_issue(self, issue_id): + url = "{0}/{1}".format(self.issues_url, issue_id) + return self._do_request(url) - results = p.communicate() + def list_milestones(self): + return self._do_request(self.milestones_url) - return json.loads(results[0]) + def list_issues_in_milestone(self, milestone_number): + url = "{0}?milestone={1:d}".format(self.issues_url, milestone_number) + return self._do_request(url) -- cgit v1.2.3