aboutsummaryrefslogtreecommitdiffstats
path: root/github3
diff options
context:
space:
mode:
Diffstat (limited to 'github3')
-rw-r--r--github3/api.py10
-rw-r--r--github3/handlers/base.py4
-rw-r--r--github3/handlers/user.py15
-rw-r--r--github3/models/user.py7
4 files changed, 27 insertions, 9 deletions
diff --git a/github3/api.py b/github3/api.py
index d99682a..b0a2c96 100644
--- a/github3/api.py
+++ b/github3/api.py
@@ -173,6 +173,10 @@ class GithubCore(object):
resp = self._http_resource('GET', resource, check_status=False)
return True if resp.status_code == 204 else False
+ def _get_raw(self, resource):
+ resp = self._http_resource('GET', resource)
+ return self._resource_deserialize(resp.content)
+
def _to_map(self, obj, iterable):
"""Maps given dict iterable to a given Resource object."""
@@ -190,9 +194,9 @@ class Github(GithubCore):
super(Github, self).__init__()
self.is_authenticated = False
- def user_handler(self, username=None, force=False):
- if force or not getattr(self, '_user_handler', False):
- if self.is_authenticated:
+ def user_handler(self, username=None, **kwargs):
+ if kwargs.get('force') or not getattr(self, '_user_handler', False):
+ if kwargs.get('private'):
self._user_handler = handlers.AuthUser(self)
else:
self._user_handler = handlers.User(self, username)
diff --git a/github3/handlers/base.py b/github3/handlers/base.py
index 93a4680..3bd4bd1 100644
--- a/github3/handlers/base.py
+++ b/github3/handlers/base.py
@@ -13,6 +13,10 @@ class Handler(object):
def _extend_url(self, *args):
return self._url + args
+ def _get_raw(self, *args, **kwargs):
+ url = self._extend_url(*args)
+ return self._gh._get_raw(url, **kwargs)
+
def _get_resource(self, *args, **kwargs):
url = self._extend_url(*args)
map_model = kwargs.get('model', self._model)
diff --git a/github3/handlers/user.py b/github3/handlers/user.py
index 09ea031..47f1a92 100644
--- a/github3/handlers/user.py
+++ b/github3/handlers/user.py
@@ -20,7 +20,7 @@ class User(Handler):
super(User, self).__init__(gh)
def __repr__(self):
- return '<Handler.AnomUser> %s' % self.username
+ return '<handler.User> %s' % self.username
def get(self):
return self._get_resource()
@@ -48,8 +48,15 @@ class AuthUser(User):
def __init__(self, gh):
self._url = ('user',)
- self._model = models.AuthUser
- super(AnomUser, self).__init__(gh)
+ self._model = models.User
+ super(User, self).__init__(gh)
def __repr__(self):
- return '<Handler.User>'
+ return '<handler.AuthUser>'
+
+ def get(self):
+ return self._get_resource(model=models.AuthUser)
+
+ def get_emails(self):
+ return self._get_raw('emails')
+
diff --git a/github3/models/user.py b/github3/models/user.py
index d58d9b2..7c730f6 100644
--- a/github3/models/user.py
+++ b/github3/models/user.py
@@ -30,7 +30,7 @@ class User(BaseResource):
return ('users', self.login)
def __repr__(self):
- return '<User {0}>'.format(self.login)
+ return '<model.User {0}>'.format(self.login)
def handler(self):
return self._gh.user_handler(self.login, force=True)
@@ -45,10 +45,13 @@ class AuthUser(User):
_map = {'plan': Plan}
_writeable = ['name', 'email', 'blog', 'company', 'location', 'hireable', 'bio']
+ def handler(self):
+ return self._gh.user_handler(self.login, force=True, private=True)
+
@property
def ri(self):
return ('user',)
def __repr__(self):
- return '<AuthUser {0}>'.format(self.login)
+ return '<model.AuthUser {0}>'.format(self.login)