diff options
author | 2011-11-01 12:33:05 +0100 | |
---|---|---|
committer | 2011-11-01 12:33:05 +0100 | |
commit | 2506d0ed2e33955d9b46802ed735cd8547369bad (patch) | |
tree | ea02535e78ae2c59d9099850e5ab2d4b1d044f10 /github3/handlers | |
parent | Testing post gist (diff) | |
parent | Decouple Handlers and Models (diff) | |
download | python-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__.py | 1 | ||||
-rw-r--r-- | github3/handlers/base.py | 25 | ||||
-rw-r--r-- | github3/handlers/user.py | 54 |
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>' |