diff options
Diffstat (limited to '')
| -rw-r--r-- | github3/handlers/__init__.py | 0 | ||||
| -rw-r--r-- | github3/handlers/base.py | 26 | ||||
| -rw-r--r-- | github3/handlers/user.py | 41 |
3 files changed, 67 insertions, 0 deletions
diff --git a/github3/handlers/__init__.py b/github3/handlers/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/github3/handlers/__init__.py diff --git a/github3/handlers/base.py b/github3/handlers/base.py new file mode 100644 index 0000000..6a5ac65 --- /dev/null +++ b/github3/handlers/base.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- +# +# author: David Medina + +import models + +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..16f8363 --- /dev/null +++ b/github3/handlers/user.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- +# +# author: David Medina + +from .base import Handler + +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.AnomUser + 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') + +class AuthUser(AnomUser): + """ Handler to query public/private api for authenticated user """ + + def __init__(self, gh): + self._url = ('user',) + self._model = models.User + super(AnomUser, self).__init__(gh) + + def __repr__(self): + return '<Handler.User>' |
