diff options
author | 2011-04-13 19:13:24 -0400 | |
---|---|---|
committer | 2011-04-13 19:13:24 -0400 | |
commit | 4a173283eb55d7405bc56c75e47e94b2eb294795 (patch) | |
tree | 2888f33f8d7e27d88a6cca1da6a36e46b1f5c899 /github3/api.py | |
parent | basic models (diff) | |
download | python-github3-4a173283eb55d7405bc56c75e47e94b2eb294795.tar.xz python-github3-4a173283eb55d7405bc56c75e47e94b2eb294795.zip |
move api
Diffstat (limited to 'github3/api.py')
-rw-r--r-- | github3/api.py | 88 |
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 +# ========== + |