aboutsummaryrefslogtreecommitdiffstats
path: root/github3/handlers/base.py
diff options
context:
space:
mode:
authorDavid Medina <davidmedina9@gmail.com>2011-11-08 11:27:36 +0100
committerDavid Medina <davidmedina9@gmail.com>2011-11-08 23:00:41 +0100
commitd783e2580388b1c9d403959925fefdb967f765da (patch)
tree77e87224613c3a953659ceec11cc9da185eb0477 /github3/handlers/base.py
parentFix clean (diff)
downloadpython-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.py19
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)
+