diff options
author | 2011-11-05 20:47:14 +0100 | |
---|---|---|
committer | 2011-11-05 20:47:14 +0100 | |
commit | bdc593ac5ae97f4f9d65df15fcc18b632fae7666 (patch) | |
tree | 1e464c0753cc980153a57191b806cc42baadab71 /github3/api.py | |
parent | Refactor base to handler design (diff) | |
download | python-github3-bdc593ac5ae97f4f9d65df15fcc18b632fae7666.tar.xz python-github3-bdc593ac5ae97f4f9d65df15fcc18b632fae7666.zip |
Fix litle bugs and args to request
Diffstat (limited to 'github3/api.py')
-rw-r--r-- | github3/api.py | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/github3/api.py b/github3/api.py index 3376bea..d82bd3a 100644 --- a/github3/api.py +++ b/github3/api.py @@ -14,16 +14,21 @@ class GithubCore(object): """ Wrapper for requests """ requests_remaining = None + base_url = 'https://api.github.com/' def __init__(self): self.session = requests.session() self.session.params = {'per_page': RESOURCES_PER_PAGE} self._parser = json - #@paginate to slice a generator after - def get(self, request, **kwargs): + def get(self, request, paginate=False, **kwargs): + print '\nGET %s %s\n' % (request, kwargs) response = self._request('GET', request, **kwargs) - return self._parser.loads(response.content) + content = self._parser.loads(response.content) + if paginate: + return response.headers.get('link'), content + else: + return content def head(self, request, **kwargs): return self._request('HEAD', request, **kwargs).headers @@ -56,10 +61,28 @@ class GithubCore(object): response = self._request('DELETE', request, **kwargs) assert response.status_code == 204 + def _parse_args(self, request_args): + request_core = ( + 'params','data','headers','cookies','files','auth','tiemout', + 'allow_redirects','proxies','return_response','config') + request_params = request_args.get('params') + extra_params = {} + for k, v in request_args.items(): + if k in request_core: continue + extra_params.update({k: v}) + del request_args[k] + if request_params: + request_args['params'].update(extra_params) + else: + request_args['params'] = extra_params + + return request_args + def _request(self, verb, request, **kwargs): - request = settings.base_url + request - response = self.session.request(verb, request, **kwargs) + request = self.base_url + request + parsed_args = self._parse_args(kwargs) + response = self.session.request(verb, request, **parsed_args) self.requests_remaining = response.headers.get( 'x-ratelimit-remaining',-1) error = GithubError(response) |