diff options
author | 2011-11-08 11:27:36 +0100 | |
---|---|---|
committer | 2011-11-08 23:00:41 +0100 | |
commit | d783e2580388b1c9d403959925fefdb967f765da (patch) | |
tree | 77e87224613c3a953659ceec11cc9da185eb0477 /github3/handlers/base.py | |
parent | Fix clean (diff) | |
download | python-github3-d783e2580388b1c9d403959925fefdb967f765da.tar.xz python-github3-d783e2580388b1c9d403959925fefdb967f765da.zip |
Abstract and decouple converters
Diffstat (limited to 'github3/handlers/base.py')
-rw-r--r-- | github3/handlers/base.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/github3/handlers/base.py b/github3/handlers/base.py index de470e9..858ca51 100644 --- a/github3/handlers/base.py +++ b/github3/handlers/base.py @@ -3,7 +3,8 @@ # # author: David Medina -from github3.core import Paginate, Modelizer +from github3.core import Paginate +from github3.converters import Modelizer class Handler(object): """ Handler base. Requests to API and modelize responses """ @@ -12,6 +13,12 @@ class Handler(object): self._gh = gh super(Handler, self).__init__() + def _get_converter(self): + try: + return getattr(self, 'converter') + except AttributeError: + return Modelizer() + def _bool(self, resource, **kwargs): """ Handler request to boolean response """ @@ -33,8 +40,9 @@ class Handler(object): for raw_resource in page: if limit and counter > limit: break counter += 1 - yield Modelizer(model or self.model).loads(raw_resource) - #yield raw_resource + converter = self._get_converter() + converter.inject(model) + yield converter.loads(raw_resource) else: continue break @@ -43,4 +51,7 @@ class Handler(object): """ Handler request to single resource """ raw_resource = self._gh.get(resource) - return Modelizer(model or self.model).loads(raw_resource) + converter = self._get_converter() + converter.inject(model) + return converter.loads(raw_resource) + |