aboutsummaryrefslogtreecommitdiffstats
path: root/github3/handlers/users.py
diff options
context:
space:
mode:
Diffstat (limited to 'github3/handlers/users.py')
-rw-r--r--github3/handlers/users.py86
1 files changed, 63 insertions, 23 deletions
diff --git a/github3/handlers/users.py b/github3/handlers/users.py
index b990c65..2f526f9 100644
--- a/github3/handlers/users.py
+++ b/github3/handlers/users.py
@@ -6,6 +6,7 @@
from .base import Handler
import github3.models as models
from github3.converters import Rawlizer
+from github3.exceptions import UserIsAnonymous
class User(Handler):
@@ -16,52 +17,91 @@ class User(Handler):
def __repr__(self):
return '<User handler> %s>' % getattr(self, 'username', 'without user')
- def set_username(self, user):
- """
- Set username to query public handler
+ def _parse_user(self, user):
+ """ Parse user, and if it fails then try with username in handler
+
+ :param user: It can be a `models.User` or alphanumeric user string
- :param `user`: User model or username string
"""
+ username = getattr(user, 'login', user)
+ if not username or not str(username).isalpha():
+ username = getattr(self, 'username', False)
+ if not username:
+ raise UserIsAnonymous('%s user is not valid' % username)
+ return str(username)
- parse_user = str(getattr(user, 'login', user))
- self.username = parse_user
- self.prefix = '/'.join((self.prefix, parse_user))
+ def set_username(self, user):
+ """ Set username to query public handler
+ Helper to less writing
+
+ :param user: It can be a `models.User` or alphanumeric user string
+
+ """
+ self.username = self._parse_user(user)
return self
- def get(self):
- """ Return user """
+ def get(self, user=None):
+ """ Return user
+
+ :param `user`: User model or username string
- return self._get_resource('', model=models.User)
+ """
+ user = self._parse_user(user)
+ return self._get_resource(user, model=models.User)
+
+ def get_followers(self, user=None):
+ """ Return user's followers
- def get_followers(self):
- """ Return user's followers """
+ :param `user`: User model or username string
- return self._get_resources('followers', model=models.User)
+ """
+ user = self._parse_user(user)
+ return self._get_resources('%s/followers' % user, model=models.User)
def get_following(self):
- """ Return users that follow """
+ """ Return users that follow
- return self._get_resources('following', model=models.User)
+ :param `user`: User model or username string
+
+ """
+ user = self._parse_user(user)
+ return self._get_resources('%s/following' % user, model=models.User)
def get_repos(self):
- """ Return user's public repositories """
+ """ Return user's public repositories
+
+ :param `user`: User model or username string
- return self._get_resources('repos', model=models.Repo)
+ """
+ user = self._parse_user(user)
+ return self._get_resources('%s/repos' % user, model=models.Repo)
def get_watched(self):
- """ Return repositories that user whatch """
+ """ Return repositories that user whatch
- return self._get_resources('watched', model=models.Repo)
+ :param `user`: User model or username string
+
+ """
+ user = self._parse_user(user)
+ return self._get_resources('%s/watched' % user, model=models.Repo)
def get_orgs(self):
- """ Return user's public organizations """
+ """ Return user's public organizations
+
+ :param `user`: User model or username string
- return self._get_resources('orgs', model=models.Org)
+ """
+ user = self._parse_user(user)
+ return self._get_resources('%s/orgs' % user, model=models.Org)
def get_gists(self):
- """ Return user's gists """
+ """ Return user's gists
- return self._get_resources('gists', model=models.Gist)
+ :param `user`: User model or username string
+
+ """
+ user = self._parse_user(user)
+ return self._get_resources('%s/gists' % user, model=models.Gist)
class AuthUser(User):