aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3
diff options
context:
space:
mode:
Diffstat (limited to 'pygithub3')
-rw-r--r--pygithub3/core/ghrequests/__init__.py20
-rw-r--r--pygithub3/core/result.py7
-rw-r--r--pygithub3/services/base.py26
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):