aboutsummaryrefslogtreecommitdiffstats
path: root/github3/handlers/user.py
diff options
context:
space:
mode:
authorAntti Kaihola <akaihol+github@ambitone.com>2011-11-09 13:04:48 +0200
committerAntti Kaihola <akaihol+github@ambitone.com>2011-11-09 13:04:48 +0200
commitf1a03e9fc8ce87ca1beeae5a92082bb32d342df3 (patch)
tree6bca689287379b249aff19fbae075182dc22f95a /github3/handlers/user.py
parentAdded create_gist() example to readme (diff)
parentFixing bugs. Crazy night :S (diff)
downloadpython-github3-f1a03e9fc8ce87ca1beeae5a92082bb32d342df3.tar.xz
python-github3-f1a03e9fc8ce87ca1beeae5a92082bb32d342df3.zip
Merged create_gist() into current HEAD of copitux/develop
Diffstat (limited to 'github3/handlers/user.py')
-rw-r--r--github3/handlers/user.py205
1 files changed, 205 insertions, 0 deletions
diff --git a/github3/handlers/user.py b/github3/handlers/user.py
new file mode 100644
index 0000000..fb893b4
--- /dev/null
+++ b/github3/handlers/user.py
@@ -0,0 +1,205 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+#
+# author: David Medina
+
+from .base import Handler
+import github3.models as models
+from github3.converters import Rawlizer
+
+class User(Handler):
+ """ User handler with public access """
+
+ prefix = 'users'
+
+ def __repr__(self):
+ return '<User handler> %s>' % getattr(self, 'username', 'without user')
+
+ def set_username(self, user):
+ """
+ Set username to query public handler
+
+ :param `user`: User model or username string
+ """
+
+ parse_user = str(getattr(user, 'login', user))
+ self.username = parse_user
+ self.prefix = '/'.join((self.prefix, parse_user))
+
+ def get(self):
+ """ Return user """
+
+ return self._get_resource('', model=models.User)
+
+ def get_followers(self):
+ """ Return user's followers """
+
+ return self._get_resources('followers', model=models.User)
+
+ def get_following(self):
+ """ Return users that follow """
+
+ return self._get_resources('following', model=models.User)
+
+ def get_repos(self):
+ """ Return user's public repositories """
+
+ return self._get_resources('repos', model=models.Repo)
+
+ def get_watched(self):
+ """ Return repositories that user whatch """
+
+ return self._get_resources('watched', model=models.Repo)
+
+ def get_orgs(self):
+ """ Return user's public organizations """
+
+ return self._get_resources('orgs', model=models.Org)
+
+ def get_gists(self):
+ """ Return user's gists """
+
+ return self._get_resources('gists', model=models.Gist)
+
+class AuthUser(User):
+ """ User handler with public and private access """
+
+ prefix = 'user'
+
+ def __repr__(self):
+ return '<AuthUser handler> %s>' % self._gh.session.auth[0]
+
+ def get(self):
+ return self._get_resource('', model=models.AuthUser)
+
+ def get_emails(self):
+ """ Return list of emails """
+
+ # Ignore converter, it must be Rawlizer
+ emails = self._get_resource('emails', converter=Rawlizer())
+ return emails
+
+ def create_emails(self, *args):
+ """
+ Add emails
+
+ :param args: Collection of emails
+ create_emails(*('test1@example.com', 'test2@example.cm'))
+ """
+ parsed_emails = map(str, args)
+ all_mails = self._post_resource(
+ 'emails', data=parsed_emails, converter=Rawlizer())
+ return all_mails
+
+ def delete_emails(self, *args):
+ """
+ Delete emails
+
+ :param args: Collection of emails
+ create_emails(*('test1@example.com', 'test2@example.cm'))
+ """
+ parsed_emails = map(str, args)
+ return self._delete('emails', data=parsed_emails)
+
+ def is_following(self, user):
+ """
+ Return true if you are following the user
+
+ :param `user`: User model or username string
+ """
+
+ parse_user = str(getattr(user, 'login', user))
+ return self._bool('following/%s' % parse_user)
+
+ def follow(self, user):
+ """
+ Follow user
+
+ :param `user`: User model or username string
+ """
+
+ parse_user = str(getattr(user, 'login', user))
+ return self._put('following/%s' % parse_user)
+
+ def unfollow(self, user):
+ """
+ Unfollow user
+
+ :param `user`: User model or username string
+ """
+
+ parse_user = str(getattr(user, 'login', user))
+ return self._delete('following/%s' % parse_user)
+
+ def get_keys(self):
+ """ Get public keys """
+
+ return self._get_resources('keys', model=models.Key)
+
+ def get_key(self, key_id):
+ """ Get public key by id """
+
+ return self._get_resource('keys/%s' % key_id, model=models.Key)
+
+ def create_key(self, **kwargs):
+ """
+ Create public key
+
+ :param title
+ :param key: Key string
+ """
+
+ #TODO: render key.pub file
+ key = {
+ 'title': kwargs.get('title',''),
+ 'key': kwargs.get('key','')
+ }
+ return self._post_resource('keys', data=key, model=models.Key)
+
+ def delete_key(self, key_id):
+ """ Delete public key """
+
+ return self._delete('keys/%s' % key_id)
+
+ def get_repos(self, filter='all'):
+ """
+ Return user's public repositories
+
+ param: filter: 'all', 'public', 'private' or 'member'
+ """
+
+ return self._get_resources('repos', model=models.Repo,
+ type=str(filter))
+
+ def is_watching_repo(self, owner, repo):
+ """
+ Return true if you are watching the user repository
+
+ :param owner: username
+ :param repo: repository name
+ is_watching_repo('copitux', 'python-github3')
+ """
+
+ owner = getattr(owner, 'login', owner)
+ repo = getattr(repo, 'name', repo)
+ return self._bool('watched/%s/%s' % (owner, repo))
+
+ def watch_repo(self, owner, repo):
+ """
+ Watch the repository
+
+ :param owner: username
+ :param repo: repository name
+ """
+
+ return self._put('watched/%s/%s' % (owner, repo))
+
+ def unwatch_repo(self, owner, repo):
+ """
+ Unwatch the repository
+
+ :param owner: username
+ :param repo: repository name
+ """
+
+ return self._delete('watched/%s/%s' % (owner, repo))