Skip to content

Commit 3aae145

Browse files
committed
Explicit > implicit
user arg in all anonymous user handler methods
1 parent 78752f5 commit 3aae145

File tree

1 file changed

+63
-23
lines changed

1 file changed

+63
-23
lines changed

github3/handlers/users.py

Lines changed: 63 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from .base import Handler
77
import github3.models as models
88
from github3.converters import Rawlizer
9+
from github3.exceptions import UserIsAnonymous
910

1011

1112
class User(Handler):
@@ -16,52 +17,91 @@ class User(Handler):
1617
def __repr__(self):
1718
return '<User handler> %s>' % getattr(self, 'username', 'without user')
1819

19-
def set_username(self, user):
20-
"""
21-
Set username to query public handler
20+
def _parse_user(self, user):
21+
""" Parse user, and if it fails then try with username in handler
22+
23+
:param user: It can be a `models.User` or alphanumeric user string
2224
23-
:param `user`: User model or username string
2425
"""
26+
username = getattr(user, 'login', user)
27+
if not username or not str(username).isalpha():
28+
username = getattr(self, 'username', False)
29+
if not username:
30+
raise UserIsAnonymous('%s user is not valid' % username)
31+
return str(username)
2532

26-
parse_user = str(getattr(user, 'login', user))
27-
self.username = parse_user
28-
self.prefix = '/'.join((self.prefix, parse_user))
33+
def set_username(self, user):
34+
""" Set username to query public handler
35+
Helper to less writing
36+
37+
:param user: It can be a `models.User` or alphanumeric user string
38+
39+
"""
40+
self.username = self._parse_user(user)
2941
return self
3042

31-
def get(self):
32-
""" Return user """
43+
def get(self, user=None):
44+
""" Return user
45+
46+
:param `user`: User model or username string
3347
34-
return self._get_resource('', model=models.User)
48+
"""
49+
user = self._parse_user(user)
50+
return self._get_resource(user, model=models.User)
51+
52+
def get_followers(self, user=None):
53+
""" Return user's followers
3554
36-
def get_followers(self):
37-
""" Return user's followers """
55+
:param `user`: User model or username string
3856
39-
return self._get_resources('followers', model=models.User)
57+
"""
58+
user = self._parse_user(user)
59+
return self._get_resources('%s/followers' % user, model=models.User)
4060

4161
def get_following(self):
42-
""" Return users that follow """
62+
""" Return users that follow
4363
44-
return self._get_resources('following', model=models.User)
64+
:param `user`: User model or username string
65+
66+
"""
67+
user = self._parse_user(user)
68+
return self._get_resources('%s/following' % user, model=models.User)
4569

4670
def get_repos(self):
47-
""" Return user's public repositories """
71+
""" Return user's public repositories
72+
73+
:param `user`: User model or username string
4874
49-
return self._get_resources('repos', model=models.Repo)
75+
"""
76+
user = self._parse_user(user)
77+
return self._get_resources('%s/repos' % user, model=models.Repo)
5078

5179
def get_watched(self):
52-
""" Return repositories that user whatch """
80+
""" Return repositories that user whatch
5381
54-
return self._get_resources('watched', model=models.Repo)
82+
:param `user`: User model or username string
83+
84+
"""
85+
user = self._parse_user(user)
86+
return self._get_resources('%s/watched' % user, model=models.Repo)
5587

5688
def get_orgs(self):
57-
""" Return user's public organizations """
89+
""" Return user's public organizations
90+
91+
:param `user`: User model or username string
5892
59-
return self._get_resources('orgs', model=models.Org)
93+
"""
94+
user = self._parse_user(user)
95+
return self._get_resources('%s/orgs' % user, model=models.Org)
6096

6197
def get_gists(self):
62-
""" Return user's gists """
98+
""" Return user's gists
6399
64-
return self._get_resources('gists', model=models.Gist)
100+
:param `user`: User model or username string
101+
102+
"""
103+
user = self._parse_user(user)
104+
return self._get_resources('%s/gists' % user, model=models.Gist)
65105

66106

67107
class AuthUser(User):

0 commit comments

Comments
 (0)