Skip to content

Commit 7f2ce93

Browse files
committed
Complete skeleton of services glueing to requests
1 parent b44952e commit 7f2ce93

File tree

3 files changed

+46
-7
lines changed

3 files changed

+46
-7
lines changed

pygithub3/core/ghrequests/__init__.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ class RequestUriInvalid(Exception):
1919
pass
2020

2121

22+
class RequestValidationError(Exception):
23+
pass
24+
25+
2226
class Request(object):
2327
""" """
2428

@@ -28,12 +32,15 @@ def __init__(self, args):
2832
self.validate()
2933
self.uri = self.set_uri()
3034

31-
def validate(self, args):
35+
def validate(self):
3236
raise NotImplementedError
3337

3438
def set_uri(self):
3539
raise NotImplementedError
3640

41+
def get_data(self):
42+
raise NotImplementedError
43+
3744
def get_uri(self):
3845
return str(self.uri).strip('/')
3946

@@ -46,6 +53,16 @@ def __getattr__(self, name):
4653
def __str__(self):
4754
return self.get_uri()
4855

56+
def _parse_simple_dict(self, to_parse):
57+
if not hasattr(to_parse, 'items'):
58+
raise RequestValidationError("'%s' needs a data dictionary"
59+
% self.__class__.__name__)
60+
update_params = {
61+
valid_key: to_parse[valid_key]
62+
for valid_key in self.valid
63+
if to_parse.has_key(valid_key)}
64+
return update_params
65+
4966

5067
class Factory(object):
5168
""" """
@@ -95,5 +112,6 @@ def wrapper(self, request_uri):
95112
@__dispatch
96113
def __call__(self, request=''):
97114
request = request(self.args)
115+
self.clear_config()
98116
assert isinstance(request, Request)
99117
return request

pygithub3/core/result.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ def wrapper(self, page=1):
2323

2424
def if_needs_lastpage(func):
2525
def wrapper(self, response):
26-
#import ipdb; ipdb.set_trace()
2726
has_link = response.headers.get('link')
2827
has_last_page = hasattr(self, 'last_page')
2928
if not has_last_page and has_link:
@@ -34,7 +33,6 @@ def wrapper(self, response):
3433

3534
@if_needs_lastpage
3635
def __set_last_page_from(self, response):
37-
#import ipdb; ipdb.set_trace()
3836
link_parsed = parse_link_value(response.headers['link'])
3937
def get_last(url):
4038
url_rels = link_parsed[url]
@@ -165,7 +163,10 @@ def get_page(self, page):
165163
return Page(self.getter, page)
166164
return None
167165

168-
def all(self):
166+
def iterator(self):
169167
for page in self:
170168
for resource in page:
171169
yield resource
170+
171+
def all(self):
172+
return list(self.iterator())

pygithub3/services/base.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from pygithub3.core.client import Client
55
from pygithub3.core.result import Result
66
from pygithub3.core.ghrequests import Factory
7+
from pygithub3.core.errors import NotFound
78

89

910
class Base(object):
@@ -24,19 +25,38 @@ def get_repo(self):
2425
def set_repo(self, repo):
2526
self.client.repo = repo
2627

27-
def config_request(self, **kwargs):
28+
def _config_request(self, **kwargs):
2829
self.get_request.config_with(**kwargs)
2930

31+
def _bool(self, request_uri, **kwargs):
32+
request = self.get_request(request_uri)
33+
try:
34+
self.client.head(request, **kwargs)
35+
return True
36+
except NotFound:
37+
return False
38+
39+
def _patch(self, request_uri, **kwargs):
40+
request = self.get_request(request_uri)
41+
resource = request.get_resource()
42+
input_data = request.get_data()
43+
response = self.client.patch(request, data=input_data, **kwargs)
44+
return resource.loads(response.content)
45+
46+
def _put(self, request_uri, **kwargs):
47+
request = self.get_request(request_uri)
48+
self.client.put(request, **kwargs)
49+
3050
def _delete(self, request_uri, **kwargs):
3151
request = self.get_request(request_uri)
3252
input_data = request.get_data()
33-
self.client.delete(request, data=input_data)
53+
self.client.delete(request, data=input_data, **kwargs)
3454

3555
def _post(self, request_uri, **kwargs):
3656
request = self.get_request(request_uri)
3757
resource = request.get_resource()
3858
input_data = request.get_data()
39-
response = self.client.post(request, data=input_data)
59+
response = self.client.post(request, data=input_data, **kwargs)
4060
return resource.loads(response.content)
4161

4262
def _get(self, request_uri, **kwargs):

0 commit comments

Comments
 (0)