aboutsummaryrefslogtreecommitdiffstats
path: root/github3/api.py
diff options
context:
space:
mode:
authorKenneth Reitz <me@kennethreitz.com>2011-04-13 19:13:24 -0400
committerKenneth Reitz <me@kennethreitz.com>2011-04-13 19:13:24 -0400
commit4a173283eb55d7405bc56c75e47e94b2eb294795 (patch)
tree2888f33f8d7e27d88a6cca1da6a36e46b1f5c899 /github3/api.py
parentbasic models (diff)
downloadpython-github3-4a173283eb55d7405bc56c75e47e94b2eb294795.tar.xz
python-github3-4a173283eb55d7405bc56c75e47e94b2eb294795.zip
move api
Diffstat (limited to 'github3/api.py')
-rw-r--r--github3/api.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/github3/api.py b/github3/api.py
new file mode 100644
index 0000000..c1f7687
--- /dev/null
+++ b/github3/api.py
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+"""
+ github3.api
+ ~~~~~~~~~~~
+
+ This module implements the GitHub3 API wrapper objects.
+
+ :copyright: (c) 2011 by Kenneth Reitz.
+ :license: ISC, see LICENSE for more details.
+"""
+
+from . import models
+from .packages.anyjson import deserialize
+
+import requests
+
+
+
+
+API_URL = 'https://api.github.com'
+API_MIME = 'application/vnd.github.v3+json'
+
+
+
+
+# =======
+# Helpers
+# =======
+
+def _safe_response(r, error=None):
+ try:
+ r.raise_for_status()
+ return r
+ except requests.HTTPError:
+ if r.status_code == 401:
+ raise LoginFailed
+ else:
+ raise APIError(error) if error else APIError
+
+
+def get(*path, **params):
+ """
+ Accepts optional error parameter, which will be passed in the event of a
+ non-401 HTTP error.
+
+ api.get('groups')
+ api.get('groups', 'id')
+ api.get('accounts', 'verify')
+ """
+ url = '{0}{1}'.format(API_URL, '/'.join(map(str, path)))
+
+ # params = kwargs.get('params', None)
+
+ r = requests.get(url, params=params, auth=None)
+
+ return _safe_response(r)
+
+
+def post(params, *path):
+
+ url = '%s%s%s' % (API_URL, '/'.join(map(str, path)), '.json')
+ r = requests.post(url, params=params, auth=auth)
+ return _safe_response(r)
+
+
+# ==========
+# Exceptions
+# ==========
+
+class LoginFailed(RuntimeError):
+ """Login falied!"""
+
+class APIError(RuntimeError):
+ """There was a problem properly accessing the Convore API."""
+
+
+
+def login(username, password):
+ """Configured API Credentials"""
+ global auth
+
+ auth = (username, password)
+ # print requests.auth_manager.__dict__
+
+# ==========
+# End Points
+# ==========
+