Skip to content

Commit 5cc1ce1

Browse files
committed
User service complete
User.emails User.keys User.followers
1 parent 7f2ce93 commit 5cc1ce1

File tree

11 files changed

+194
-22
lines changed

11 files changed

+194
-22
lines changed

README.rst

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
Python github3 wrapper
22
=======================
33

4-
Under heavy development
4+
Achievements
5+
-------------
56

7+
- The hard part (Client, Service[s], Request[s], ResultIterator, Resource[s]). Now I have to join this pieces :P
8+
9+
TODO (in order as far as possible)
10+
------------------------------------
11+
12+
- Tests
13+
- Doc (Sphinx?)
14+
- Continue developing services (it must be now easy and fast)
15+
- Upload pypi ;)
16+
- ...
17+
18+
Install
19+
----------
20+
21+
$ pip install -e git+https://github.com/copitux/python-github3

pygithub3/core/ghrequests/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def _parse_simple_dict(self, to_parse):
6060
update_params = {
6161
valid_key: to_parse[valid_key]
6262
for valid_key in self.valid
63-
if to_parse.has_key(valid_key)}
63+
if valid_key in to_parse}
6464
return update_params
6565

6666

@@ -71,7 +71,7 @@ class Factory(object):
7171

7272
def __init__(self):
7373
""" """
74-
self.args = {}
74+
self.args = {}
7575

7676
def config_with(self, **kwargs):
7777
self.args = kwargs
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.ghrequests import Request
3+
from pygithub3.core.ghrequests import Request, json, RequestValidationError
44
from user import *

pygithub3/core/ghrequests/users/emails.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ def validate(self):
1515
def set_uri(self):
1616
return 'user/emails'
1717

18+
1819
class Add(Request):
1920

20-
resource = Raw
21+
resource = Raw
2122

2223
def validate(self):
2324
pass
@@ -28,6 +29,7 @@ def get_data(self):
2829
def set_uri(self):
2930
return 'user/emails'
3031

32+
3133
class Delete(Request):
3234

3335
resource = Raw

pygithub3/core/ghrequests/users/followers.py

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#!/usr/bin/env python
22
# -*- encoding: utf-8 -*-
33

4-
from . import Request
4+
from . import Request, RequestValidationError
55
from pygithub3.resources.users import User
6-
7-
__all__ = ('List',)
6+
from pygithub3.resources.base import Raw
87

98

109
class List(Request):
@@ -34,13 +33,44 @@ def set_uri(self):
3433
else:
3534
return 'user/following'
3635

36+
37+
class Isfollowing(Request):
38+
39+
resource = Raw
40+
41+
def validate(self):
42+
if not self.user:
43+
raise RequestValidationError(
44+
"'%s' request needs a user" % self.__class__.__name__)
45+
46+
def set_uri(self):
47+
return 'user/following/%s' % self.user
48+
49+
50+
class Follow(Request):
51+
52+
resource = Raw
53+
54+
def validate(self):
55+
if not self.user:
56+
raise RequestValidationError(
57+
"'%s' request needs a user" % self.__class__.__name__)
58+
59+
def set_uri(self):
60+
return 'user/following/%s' % self.user
61+
62+
3763
class Unfollow(Request):
3864

3965
resource = User
4066

4167
def validate(self):
4268
if not self.user:
43-
raise Exception('unfollow ened user') # TODO: validate exception
69+
raise RequestValidationError(
70+
"'%s' request needs a user" % self.__class__.__name__)
4471

4572
def set_uri(self):
4673
return 'user/following/%s' % self.user
74+
75+
def get_data(self):
76+
pass
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
from . import Request, json, RequestValidationError
5+
from pygithub3.resources.users import Key
6+
from pygithub3.resources.base import Raw
7+
8+
9+
class List(Request):
10+
11+
resource = Key
12+
13+
def validate(self):
14+
pass
15+
16+
def set_uri(self):
17+
return 'user/keys'
18+
19+
20+
class Get(Request):
21+
22+
resource = Key
23+
24+
def validate(self):
25+
if not self.key_id:
26+
raise RequestValidationError("'%s' needs key_id"
27+
% self.__class__.__name__)
28+
29+
def set_uri(self):
30+
return 'user/keys/%s' % self.key_id
31+
32+
33+
class Add(Request):
34+
35+
resource = Key
36+
valid = ('title', 'key')
37+
38+
def validate(self):
39+
self.add_data = self._parse_simple_dict(self.add_data)
40+
41+
def set_uri(self):
42+
return 'user/keys'
43+
44+
def get_data(self):
45+
return json.dumps(self.add_data)
46+
47+
48+
class Update(Request):
49+
50+
resource = Key
51+
valid = ('title', 'key')
52+
53+
def validate(self):
54+
if not self.key_id:
55+
raise RequestValidationError("'%s' needs key_id"
56+
% self.__class__.__name__)
57+
self.update_params = self._parse_simple_dict(self.update_with)
58+
59+
def set_uri(self):
60+
return 'user/keys/%s' % self.key_id
61+
62+
def get_data(self):
63+
return json.dumps(self.update_params)
64+
65+
66+
class Delete(Request):
67+
68+
resource = Raw
69+
70+
def validate(self):
71+
if not self.key_id:
72+
raise RequestValidationError("'%s' needs key_id"
73+
% self.__class__.__name__)
74+
75+
def set_uri(self):
76+
return 'user/keys/%s' % self.key_id
77+
78+
def get_data(self):
79+
return None

pygithub3/core/ghrequests/users/user.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/env python
22
# -*- encoding: utf-8 -*-
33

4-
from . import Request
4+
from . import Request, json
55
from pygithub3.resources.users import User
66

77
__all__ = ('Get', 'Update')
@@ -22,4 +22,15 @@ def set_uri(self):
2222

2323

2424
class Update(Request):
25-
pass
25+
26+
resource = User
27+
valid = ('name', 'email', 'blog', 'company', 'location', 'hireable', 'bio')
28+
29+
def validate(self):
30+
self.update_params = self._parse_simple_dict(self.update_with)
31+
32+
def get_data(self):
33+
return json.dumps(self.update_params)
34+
35+
def set_uri(self):
36+
return 'user'

pygithub3/core/result.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def __init__(self, method, request, **method_args):
1616

1717
def cached(func):
1818
def wrapper(self, page=1):
19-
if self.cache.has_key(str(page)):
19+
if str(page) in self.cache:
2020
return self.cache[str(page)]
2121
return func(self, page)
2222
return wrapper
@@ -34,6 +34,7 @@ def wrapper(self, response):
3434
@if_needs_lastpage
3535
def __set_last_page_from(self, response):
3636
link_parsed = parse_link_value(response.headers['link'])
37+
3738
def get_last(url):
3839
url_rels = link_parsed[url]
3940
return (url_rels.get('rel') == 'last')
@@ -57,6 +58,7 @@ def last(self):
5758
self()
5859
return self.last_page
5960

61+
6062
class Page(object):
6163
""" """
6264

pygithub3/resources/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def parse_collection_map(resource, raw_resources):
6060
{attr: parse_date(raw_resource[attr])
6161
for attr in self._dates if attr in raw_resource})
6262
raw_resource.update(
63-
{attr: parse_map(resource , raw_resource[attr])
63+
{attr: parse_map(resource, raw_resource[attr])
6464
for attr, resource in self._maps.items()
6565
if attr in raw_resource})
6666
raw_resource.update(

pygithub3/resources/users.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
__all__ = ('Plan', 'User')
77

88

9+
class Key(Resource):
10+
11+
def __str__(self):
12+
return '<Key (%s)>' % getattr(self, 'title', '')
13+
14+
915
class Plan(Resource):
1016

1117
def __str__(self):

0 commit comments

Comments
 (0)