diff options
author | 2011-11-08 12:16:45 +0100 | |
---|---|---|
committer | 2011-11-08 23:01:36 +0100 | |
commit | a7cb909b17704ac46d47c77d8074f9ced2393cfc (patch) | |
tree | afe56e254a36ff5cd59e8caad2d95ed50f102911 /github3/handlers/base.py | |
parent | Added post_resource to handler (diff) | |
download | python-github3-a7cb909b17704ac46d47c77d8074f9ced2393cfc.tar.xz python-github3-a7cb909b17704ac46d47c77d8074f9ced2393cfc.zip |
Prefix handlers
Also give the possibility of inject converter in requests
Diffstat (limited to 'github3/handlers/base.py')
-rw-r--r-- | github3/handlers/base.py | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/github3/handlers/base.py b/github3/handlers/base.py index 9e5a110..ab9801e 100644 --- a/github3/handlers/base.py +++ b/github3/handlers/base.py @@ -13,16 +13,23 @@ class Handler(object): self._gh = gh super(Handler, self).__init__() - def _get_converter(self): - try: - return getattr(self, 'converter') - except AttributeError: - return Modelizer() + def _prefix_resource(self, resource): + prefix = getattr(self, 'prefix', '') + return '/'.join((prefix, resource)) + + def _get_converter(self, kwargs): + converter = kwargs.get( + 'converter', # 1. in kwargs + getattr(self, 'converter', # 2. in handler + Modelizer())) # 3. Default + + return converter def _bool(self, resource, **kwargs): """ Handler request to boolean response """ from github3.exceptions import NotFound + resource = self._prefix_resource(resource) try: response = self._gh.head(resource, **kwargs) except NotFound: @@ -31,34 +38,37 @@ class Handler(object): return True #TODO: if limit is multiple of per_page... it do another request for nothing - def _get_resources(self, resource, model=None, limit=None): + def _get_resources(self, resource, model=None, limit=None, **kwargs): """ Hander request to multiple resources """ + resource = self._prefix_resource(resource) page_resources = Paginate(resource, self._gh.get) counter = 1 for page in page_resources: for raw_resource in page: if limit and counter > limit: break counter += 1 - converter = self._get_converter() + converter = self._get_converter(kwargs) converter.inject(model) yield converter.loads(raw_resource) else: continue break - def _get_resource(self, resource, model=None): + def _get_resource(self, resource, model=None, **kwargs): """ Handler request to single resource """ + resource = self._prefix_resource(resource) raw_resource = self._gh.get(resource) - converter = self._get_converter() + converter = self._get_converter(kwargs) converter.inject(model) return converter.loads(raw_resource) - def _post_resource(self, resource, data, model=None): + def _post_resource(self, resource, data, model=None, **kwargs): """ Handler request to create a resource """ + resource = self._prefix_resource(resource) raw_resource = self._gh.post(resource, data=data) - converter = self._get_converter() + converter = self._get_converter(kwargs) converter.inject(model) return converter.loads(raw_resource) |