aboutsummaryrefslogtreecommitdiffstats
path: root/github3/handlers
diff options
context:
space:
mode:
authorDavid Medina <davidmedina9@gmail.com>2011-11-01 12:33:05 +0100
committerDavid Medina <davidmedina9@gmail.com>2011-11-01 12:33:05 +0100
commit2506d0ed2e33955d9b46802ed735cd8547369bad (patch)
treeea02535e78ae2c59d9099850e5ab2d4b1d044f10 /github3/handlers
parentTesting post gist (diff)
parentDecouple Handlers and Models (diff)
downloadpython-github3-2506d0ed2e33955d9b46802ed735cd8547369bad.tar.xz
python-github3-2506d0ed2e33955d9b46802ed735cd8547369bad.zip
Merge branch 'handlers' into develop
Conflicts: github3/api.py
Diffstat (limited to 'github3/handlers')
-rw-r--r--github3/handlers/__init__.py1
-rw-r--r--github3/handlers/base.py25
-rw-r--r--github3/handlers/user.py54
3 files changed, 80 insertions, 0 deletions
diff --git a/github3/handlers/__init__.py b/github3/handlers/__init__.py
new file mode 100644
index 0000000..126efcb
--- /dev/null
+++ b/github3/handlers/__init__.py
@@ -0,0 +1 @@
+from user import AuthUser, User
diff --git a/github3/handlers/base.py b/github3/handlers/base.py
new file mode 100644
index 0000000..93a4680
--- /dev/null
+++ b/github3/handlers/base.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+#
+# author: David Medina
+
+class Handler(object):
+ """ Abstract handler, that inject github.api """
+
+ def __init__(self, gh):
+ self._gh = gh
+ super(Handler, self).__init__()
+
+ def _extend_url(self, *args):
+ return self._url + args
+
+ def _get_resource(self, *args, **kwargs):
+ url = self._extend_url(*args)
+ map_model = kwargs.get('model', self._model)
+ return self._gh._get_resource(url, map_model, **kwargs)
+
+ def _get_resources(self, *args, **kwargs):
+ url = self._extend_url(*args)
+ map_model = kwargs.get('model', self._model)
+ return self._gh._get_resources(url, map_model, **kwargs)
+
diff --git a/github3/handlers/user.py b/github3/handlers/user.py
new file mode 100644
index 0000000..c59607d
--- /dev/null
+++ b/github3/handlers/user.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+#
+# author: David Medina
+
+from .base import Handler
+import github3.models as models
+
+class User(Handler):
+ """ Handler to query public user api """
+
+ def __init__(self, gh, username):
+ if not username:
+ raise exceptions.AnomUser("%s need a username" % self.__class__)
+
+ self._url = ('users', username)
+ self._model = models.User
+ self.username = username
+ super(User, self).__init__(gh)
+
+ def __repr__(self):
+ return '<Handler.AnomUser> %s' % self.username
+
+ def get(self):
+ return self._get_resource()
+
+ def get_followers(self, limit=None):
+ return self._get_resources('followers')
+
+ def get_following(self, limit=None):
+ return self._get_resources('following')
+
+ def get_repos(self, limit=None):
+ return self._get_resources('repos', model=models.Repo)
+
+ def get_watched(self, limit=None):
+ return self._get_resources('watched', model=models.Repo)
+
+ def get_orgs(self, limit=None):
+ return self._get_resources('orgs', model=models.Org)
+
+ def get_gists(self, limit=None):
+ return self._get_resources('gists', model=models.Gist)
+
+class AuthUser(User):
+ """ Handler to query public/private api for authenticated user """
+
+ def __init__(self, gh):
+ self._url = ('user',)
+ self._model = models.AuthUser
+ super(AnomUser, self).__init__(gh)
+
+ def __repr__(self):
+ return '<Handler.User>'