Syntaxic sugar
This commit is contained in:
parent
d5c23edff9
commit
6616f87b09
1 changed files with 55 additions and 31 deletions
|
@ -174,15 +174,11 @@ class Re2oAPIClient:
|
||||||
endpoint=endpoints.get_endpoint_for(name, **kwargs)
|
endpoint=endpoints.get_endpoint_for(name, **kwargs)
|
||||||
)
|
)
|
||||||
|
|
||||||
def __getattr__(self, item):
|
def _list_for(self, obj_name, max_results=None, params={}, **kwargs):
|
||||||
|
|
||||||
if item.startswith('list_'):
|
|
||||||
|
|
||||||
def f(max_results=None, params={}, **kwargs):
|
|
||||||
if not 'page_size' in params.keys():
|
if not 'page_size' in params.keys():
|
||||||
params['page_size'] = 'all'
|
params['page_size'] = 'all'
|
||||||
response = self.get(
|
response = self.get(
|
||||||
self.get_url_for('%s-list' % item[len('list_'):], **kwargs),
|
self.get_url_for('%s-list' % obj_name, **kwargs),
|
||||||
params=params
|
params=params
|
||||||
)
|
)
|
||||||
results = response['results']
|
results = response['results']
|
||||||
|
@ -191,27 +187,55 @@ class Re2oAPIClient:
|
||||||
response = self.get(response['next'])
|
response = self.get(response['next'])
|
||||||
results += response['results']
|
results += response['results']
|
||||||
return results[:max_results] if max_results else results
|
return results[:max_results] if max_results else results
|
||||||
return f
|
|
||||||
|
|
||||||
elif item.startswith('count_'):
|
def _count_for(self, obj_name, params={}, **kwargs):
|
||||||
|
|
||||||
def f(params={}, **kwargs):
|
|
||||||
if not 'page_size' in params.keys():
|
if not 'page_size' in params.keys():
|
||||||
params['page_size'] = 1
|
params['page_size'] = 1
|
||||||
return self.get(
|
return self.get(
|
||||||
self.get_url_for('%s-list' % item[len('count_'):], **kwargs),
|
self.get_url_for('%s-list' % obj_name, **kwargs),
|
||||||
params=params
|
params=params
|
||||||
)['count']
|
)['count']
|
||||||
return f
|
|
||||||
|
|
||||||
elif item.startswith('view_'):
|
def _view_for(self, obj_name, params={}, **kwargs):
|
||||||
|
|
||||||
def f(params={}, **kwargs):
|
|
||||||
return self.get(
|
return self.get(
|
||||||
self.get_url_for('%s-details' % item[len('view_'):], **kwargs),
|
self.get_url_for('%s-details' % obj_name, **kwargs),
|
||||||
params=params
|
params=params
|
||||||
)
|
)
|
||||||
return f
|
|
||||||
|
def __getattr__(self, item):
|
||||||
|
|
||||||
|
if item.startswith('list_'):
|
||||||
|
return lambda *args, **kwargs: self._list_for(
|
||||||
|
item[len('list_'):],
|
||||||
|
*args,
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
|
||||||
|
elif item.startswith('count_'):
|
||||||
|
return lambda *args, **kwargs: self._count_for(
|
||||||
|
item[len('count_'):],
|
||||||
|
*args,
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
|
||||||
|
elif item.startswith('view_'):
|
||||||
|
return lambda *args, **kwargs: self._view_for(
|
||||||
|
item[len('view_'):],
|
||||||
|
*args,
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
raise AttributeError(item)
|
raise AttributeError(item)
|
||||||
|
|
||||||
|
def __dir__(self):
|
||||||
|
ret = ['use_tls', 'token_file', 'hostname', 'token',
|
||||||
|
'need_renew_token', 'get_token', 'get', 'post', 'get_url_for']
|
||||||
|
for name in endpoints.get_names():
|
||||||
|
if name.endswith('-list'):
|
||||||
|
ret.append('list_%s' % name[:-len('-list')])
|
||||||
|
ret.append('count_%s' % name[:-len('-list')])
|
||||||
|
elif name.endswith('-details'):
|
||||||
|
ret.append('view_%s' % name[:-len('-details')])
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue