diff options
Diffstat (limited to 'pygithub3')
-rw-r--r-- | pygithub3/core/ghrequests/__init__.py | 20 | ||||
-rw-r--r-- | pygithub3/core/result.py | 7 | ||||
-rw-r--r-- | pygithub3/services/base.py | 26 |
3 files changed, 46 insertions, 7 deletions
diff --git a/pygithub3/core/ghrequests/__init__.py b/pygithub3/core/ghrequests/__init__.py index b3b7c28..b4faae5 100644 --- a/pygithub3/core/ghrequests/__init__.py +++ b/pygithub3/core/ghrequests/__init__.py @@ -19,6 +19,10 @@ class RequestUriInvalid(Exception): pass +class RequestValidationError(Exception): + pass + + class Request(object): """ """ @@ -28,12 +32,15 @@ class Request(object): self.validate() self.uri = self.set_uri() - def validate(self, args): + def validate(self): raise NotImplementedError def set_uri(self): raise NotImplementedError + def get_data(self): + raise NotImplementedError + def get_uri(self): return str(self.uri).strip('/') @@ -46,6 +53,16 @@ class Request(object): def __str__(self): return self.get_uri() + def _parse_simple_dict(self, to_parse): + if not hasattr(to_parse, 'items'): + raise RequestValidationError("'%s' needs a data dictionary" + % self.__class__.__name__) + update_params = { + valid_key: to_parse[valid_key] + for valid_key in self.valid + if to_parse.has_key(valid_key)} + return update_params + class Factory(object): """ """ @@ -95,5 +112,6 @@ class Factory(object): @__dispatch def __call__(self, request=''): request = request(self.args) + self.clear_config() assert isinstance(request, Request) return request diff --git a/pygithub3/core/result.py b/pygithub3/core/result.py index 1c8181e..f0b3016 100644 --- a/pygithub3/core/result.py +++ b/pygithub3/core/result.py @@ -23,7 +23,6 @@ class Method(object): def if_needs_lastpage(func): def wrapper(self, response): - #import ipdb; ipdb.set_trace() has_link = response.headers.get('link') has_last_page = hasattr(self, 'last_page') if not has_last_page and has_link: @@ -34,7 +33,6 @@ class Method(object): @if_needs_lastpage def __set_last_page_from(self, response): - #import ipdb; ipdb.set_trace() link_parsed = parse_link_value(response.headers['link']) def get_last(url): url_rels = link_parsed[url] @@ -165,7 +163,10 @@ class Result(object): return Page(self.getter, page) return None - def all(self): + def iterator(self): for page in self: for resource in page: yield resource + + def all(self): + return list(self.iterator()) diff --git a/pygithub3/services/base.py b/pygithub3/services/base.py index 98969c6..f124e42 100644 --- a/pygithub3/services/base.py +++ b/pygithub3/services/base.py @@ -4,6 +4,7 @@ from pygithub3.core.client import Client from pygithub3.core.result import Result from pygithub3.core.ghrequests import Factory +from pygithub3.core.errors import NotFound class Base(object): @@ -24,19 +25,38 @@ class Base(object): def set_repo(self, repo): self.client.repo = repo - def config_request(self, **kwargs): + def _config_request(self, **kwargs): self.get_request.config_with(**kwargs) + def _bool(self, request_uri, **kwargs): + request = self.get_request(request_uri) + try: + self.client.head(request, **kwargs) + return True + except NotFound: + return False + + def _patch(self, request_uri, **kwargs): + request = self.get_request(request_uri) + resource = request.get_resource() + input_data = request.get_data() + response = self.client.patch(request, data=input_data, **kwargs) + return resource.loads(response.content) + + def _put(self, request_uri, **kwargs): + request = self.get_request(request_uri) + self.client.put(request, **kwargs) + def _delete(self, request_uri, **kwargs): request = self.get_request(request_uri) input_data = request.get_data() - self.client.delete(request, data=input_data) + self.client.delete(request, data=input_data, **kwargs) def _post(self, request_uri, **kwargs): request = self.get_request(request_uri) resource = request.get_resource() input_data = request.get_data() - response = self.client.post(request, data=input_data) + response = self.client.post(request, data=input_data, **kwargs) return resource.loads(response.content) def _get(self, request_uri, **kwargs): |