66from .base import Handler
77import github3 .models as models
88from github3 .converters import Rawlizer
9+ from github3 .exceptions import UserIsAnonymous
910
1011
1112class 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
67107class AuthUser (User ):
0 commit comments