Skip to content

Commit 8a723b0

Browse files
committed
Renaming (What I was thinking?)
resources => ghrequests models => resources + Also it's near to complete user service
1 parent 381e60a commit 8a723b0

File tree

16 files changed

+278
-178
lines changed

16 files changed

+278
-178
lines changed

pygithub3/core/client.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -62,37 +62,37 @@ def __set_params(self, config):
6262
def __parse_kwargs(func):
6363
""" Decorator to put extra args into requests.params """
6464

65-
def wrapper(self, verb, resource, **kwargs):
65+
def wrapper(self, verb, request, **kwargs):
6666
diffs = kwargs.viewkeys() - VALID_REQUEST_ARGS
6767
new_params = kwargs.get('params', {})
6868
for key in diffs: # Put each key in new_params and delete it
6969
new_params[key] = kwargs[key]
7070
del kwargs[key]
7171
kwargs['params'] = new_params
72-
return func(self, verb, resource, **kwargs)
72+
return func(self, verb, request, **kwargs)
7373
return wrapper
7474

7575
@__parse_kwargs
76-
def request(self, verb, resource, **kwargs):
77-
resource = "%s%s" % (self.config['base_url'], resource)
78-
response = self.requester.request(verb, resource, **kwargs)
76+
def request(self, verb, request, **kwargs):
77+
request = "%s%s" % (self.config['base_url'], request)
78+
response = self.requester.request(verb, request, **kwargs)
7979
GithubError(response).process()
8080
return response
8181

82-
def get(self, resource, **kwargs):
83-
return self.request('get', resource, **kwargs)
82+
def get(self, request, **kwargs):
83+
return self.request('get', request, **kwargs)
8484

85-
def post(self, resource, **kwargs):
86-
return self.request('post', resource, **kwargs)
85+
def post(self, request, **kwargs):
86+
return self.request('post', request, **kwargs)
8787

88-
def patch(self, resource, **kwargs):
89-
return self.request('patch', resource, **kwargs)
88+
def patch(self, request, **kwargs):
89+
return self.request('patch', request, **kwargs)
9090

91-
def put(self, resource, **kwargs):
92-
return self.request('put', resource, **kwargs)
91+
def put(self, request, **kwargs):
92+
return self.request('put', request, **kwargs)
9393

94-
def delete(self, resource, **kwargs):
95-
return self.request('delete', resource, **kwargs)
94+
def delete(self, request, **kwargs):
95+
return self.request('delete', request, **kwargs)
9696

97-
def head(self, resource, **kwargs):
98-
return self.request('head', resource, **kwargs)
97+
def head(self, request, **kwargs):
98+
return self.request('head', request, **kwargs)
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
import re
5+
from importlib import import_module
6+
try:
7+
import simplejson as json
8+
except ImportError:
9+
import json
10+
11+
ABS_IMPORT_PREFIX = 'pygithub3.core.ghrequests'
12+
13+
14+
class RequestNotFound(Exception):
15+
pass
16+
17+
18+
class RequestUriInvalid(Exception):
19+
pass
20+
21+
22+
class Request(object):
23+
""" """
24+
25+
def __init__(self, args):
26+
""" """
27+
self.args = args
28+
self.validate()
29+
self.uri = self.set_uri()
30+
31+
def validate(self, args):
32+
raise NotImplementedError
33+
34+
def set_uri(self):
35+
raise NotImplementedError
36+
37+
def get_uri(self):
38+
return str(self.uri).strip('/')
39+
40+
def get_resource(self):
41+
return getattr(self, 'resource', '')
42+
43+
def __getattr__(self, name):
44+
return self.args.get(name)
45+
46+
def __str__(self):
47+
return self.get_uri()
48+
49+
50+
class Factory(object):
51+
""" """
52+
53+
import_pattern = re.compile(r'^(\w+\.)+\w+$')
54+
55+
def __init__(self):
56+
""" """
57+
self.args = {}
58+
59+
def config_with(self, **kwargs):
60+
self.args = kwargs
61+
62+
def clear_config(self):
63+
self.args = {}
64+
65+
def __validate(func):
66+
""" """
67+
68+
def wrapper(self, request_uri):
69+
if not Factory.import_pattern.match(request_uri):
70+
raise RequestUriInvalid("'%s' isn't valid form" % request_uri)
71+
return func(self, request_uri.lower())
72+
return wrapper
73+
74+
def __dispatch(func):
75+
""" """
76+
77+
def wrapper(self, request_uri):
78+
module_chunk, s, request_chunk = request_uri.rpartition('.')
79+
try:
80+
# TODO: CamelCase and under_score support, now only Class Name
81+
module = import_module('%s.%s'
82+
% (ABS_IMPORT_PREFIX, module_chunk))
83+
request = getattr(module, request_chunk.capitalize())
84+
except ImportError:
85+
raise RequestNotFound("'%s' module does not exists"
86+
% module_chunk)
87+
except AttributeError:
88+
raise RequestNotFound(
89+
"'%s' request doesn't exists into '%s' module"
90+
% (request_chunk.capitalize(), module_chunk))
91+
return func(self, request)
92+
return wrapper
93+
94+
@__validate
95+
@__dispatch
96+
def __call__(self, request=''):
97+
request = request(self.args)
98+
assert isinstance(request, Request)
99+
return request
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# -*- encoding: utf-8 -*-
22

3-
from pygithub3.core.resources import Resource
3+
from pygithub3.core.ghrequests import Request
44
from user import *
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
from . import Request, json
5+
from pygithub3.resources.base import Raw
6+
7+
8+
class List(Request):
9+
10+
resource = Raw
11+
12+
def validate(self):
13+
pass
14+
15+
def set_uri(self):
16+
return 'user/emails'
17+
18+
class Add(Request):
19+
20+
resource = Raw
21+
22+
def validate(self):
23+
pass
24+
25+
def get_data(self):
26+
return json.dumps(self.emails)
27+
28+
def set_uri(self):
29+
return 'user/emails'
30+
31+
class Delete(Request):
32+
33+
resource = Raw
34+
35+
def validate(self):
36+
pass
37+
38+
def get_data(self):
39+
return json.dumps(self.emails)
40+
41+
def set_uri(self):
42+
return 'user/emails'
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
from . import Request
5+
from pygithub3.resources.users import User
6+
7+
__all__ = ('List',)
8+
9+
10+
class List(Request):
11+
12+
resource = User
13+
14+
def validate(self):
15+
pass
16+
17+
def set_uri(self):
18+
if self.user:
19+
return 'users/%s/followers' % self.user
20+
else:
21+
return 'user/followers'
22+
23+
24+
class Listfollowing(Request):
25+
26+
resource = User
27+
28+
def validate(self):
29+
pass
30+
31+
def set_uri(self):
32+
if self.user:
33+
return 'users/%s/following' % self.user
34+
else:
35+
return 'user/following'
36+
37+
class Unfollow(Request):
38+
39+
resource = User
40+
41+
def validate(self):
42+
if not self.user:
43+
raise Exception('unfollow ened user') # TODO: validate exception
44+
45+
def set_uri(self):
46+
return 'user/following/%s' % self.user
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#!/usr/bin/env python
22
# -*- encoding: utf-8 -*-
33

4-
from . import Resource
5-
from pygithub3.models.users import User
4+
from . import Request
5+
from pygithub3.resources.users import User
66

77
__all__ = ('Get', 'Update')
88

99

10-
class Get(Resource):
10+
class Get(Request):
1111

12-
model = User
12+
resource = User
1313

1414
def validate(self):
1515
pass
@@ -21,5 +21,5 @@ def set_uri(self):
2121
return 'user'
2222

2323

24-
class Update(Resource):
24+
class Update(Request):
2525
pass

pygithub3/core/resources/__init__.py

Lines changed: 0 additions & 87 deletions
This file was deleted.

pygithub3/core/resources/users/emails.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

pygithub3/core/resources/users/followers.py

Whitespace-only changes.

0 commit comments

Comments
 (0)