improvments

This commit is contained in:
FoxMaSk
2016-05-15 15:22:46 +02:00
parent 07f6057421
commit 4ad230a83e
2 changed files with 61 additions and 31 deletions

View File

@@ -66,20 +66,21 @@ class Wallabag(object):
necessary things to query the API necessary things to query the API
:return json data :return json data
""" """
if method in ('get', 'post', 'patch', 'delete', 'put', 'get_token'): if method in ('get', 'post', 'patch', 'delete', 'put'):
full_path = self.get_host() + path
if method == 'get': if method == 'get':
r = requests.get(self.get_host() + path, params=params) r = requests.get(full_path, params=params)
elif method == 'post': elif method == 'post':
r = requests.post(self.get_host() + path, data=params) r = requests.post(full_path, data=params)
elif method == 'patch': elif method == 'patch':
r = requests.patch(self.get_host() + path, data=params) r = requests.patch(full_path, data=params)
elif method == 'delete': elif method == 'delete':
r = requests.delete(self.get_host() + path, headers=params) r = requests.delete(full_path, headers=params)
elif method == 'put': elif method == 'put':
r = requests.put(self.get_host() + path, params=params) r = requests.put(full_path, params=params)
return self.handle_json_response(r) return self.handle_json_response(r)
else: else:
raise ValueError('method expected : get, post, patch, delete or put') raise ValueError('method expected: get, post, patch, delete, put')
@staticmethod @staticmethod
def handle_json_response(responses): def handle_json_response(responses):
@@ -99,6 +100,11 @@ class Wallabag(object):
logging.error("Wallabag: {error}".format(error=error_json)) logging.error("Wallabag: {error}".format(error=error_json))
return json_data return json_data
def __get_attr(self, what, type_attr, value_attr, **kwargs):
value = int(kwargs[what]) if type_attr == 'int' else kwargs[what]
if what in kwargs and value in value_attr:
return value
def get_entries(self, **kwargs): def get_entries(self, **kwargs):
""" """
@@ -119,7 +125,7 @@ class Wallabag(object):
:return data related to the ext :return data related to the ext
""" """
# default values # default values
params = {'access_token': self.token, params = dict({'access_token': self.token,
'archive': 0, 'archive': 0,
'star': 0, 'star': 0,
'delete': 0, 'delete': 0,
@@ -127,16 +133,25 @@ class Wallabag(object):
'order': 'desc', 'order': 'desc',
'page': 1, 'page': 1,
'perPage': 30, 'perPage': 30,
'tags': []} 'tags': []})
params['archive'] = self.__get_attr(what='archive',
type_attr=int,
value_attr=(0, 1),
**kwargs)
params['star'] = self.__get_attr(what='star',
type_attr=int,
value_attr=(0, 1),
**kwargs)
params['delete'] = self.__get_attr(what='delete',
type_attr=int,
value_attr=(0, 1),
**kwargs)
params['order'] = self.__get_attr(what='order',
type_attr=str,
value_attr=('asc', 'desc'),
**kwargs)
if 'archive' in kwargs and int(kwargs['archive']) in (0, 1):
params['archive'] = int(kwargs['archive'])
if 'star' in kwargs and int(kwargs['star']) in (0, 1):
params['star'] = int(kwargs['star'])
if 'delete' in kwargs and int(kwargs['delete']) in (0, 1):
params['delete'] = int(kwargs['delete'])
if 'order' in kwargs and kwargs['order'] in ('asc', 'desc'):
params['order'] = kwargs['order']
if 'page' in kwargs and isinstance(kwargs['page'], int): if 'page' in kwargs and isinstance(kwargs['page'], int):
params['page'] = kwargs['page'] params['page'] = kwargs['page']
if 'perPage' in kwargs and isinstance(kwargs['perPage'], int): if 'perPage' in kwargs and isinstance(kwargs['perPage'], int):
@@ -180,7 +195,8 @@ class Wallabag(object):
:return data related to the ext :return data related to the ext
""" """
params = {'access_token': self.token} params = {'access_token': self.token}
url = '/api/entries/{entry}.{ext}'.format(entry=entry, ext=self.format) url = '/api/entries/{entry}.{ext}'.format(entry=entry,
ext=self.format)
return self.query(url, "get", **params) return self.query(url, "get", **params)
def patch_entries(self, entry, **kwargs): def patch_entries(self, entry, **kwargs):
@@ -207,16 +223,29 @@ class Wallabag(object):
'tags': [], 'tags': [],
'star': 0, 'star': 0,
'delete': 0} 'delete': 0}
if 'title' in kwargs: if 'title' in kwargs:
params['title'] = kwargs['title'] params['title'] = kwargs['title']
if 'tags' in kwargs and isinstance(kwargs['tags'], list): if 'tags' in kwargs and isinstance(kwargs['tags'], list):
params['tags'] = ', '.join(kwargs['tags']) params['tags'] = ', '.join(kwargs['tags'])
if 'archive' in kwargs and int(kwargs['archive']) in (0, 1):
params['archive'] = int(kwargs['archive']) params['archive'] = self.__get_attr(what='archive',
if 'star' in kwargs and int(kwargs['star']) in (0, 1): type_attr=int,
params['star'] = int(kwargs['star']) value_attr=(0, 1),
if 'delete' in kwargs and int(kwargs['delete']) in (0, 1): **kwargs)
params['delete'] = int(kwargs['delete']) params['star'] = self.__get_attr(what='star',
type_attr=int,
value_attr=(0, 1),
**kwargs)
params['delete'] = self.__get_attr(what='delete',
type_attr=int,
value_attr=(0, 1),
**kwargs)
params['order'] = self.__get_attr(what='order',
type_attr=str,
value_attr=('asc', 'desc'),
**kwargs)
path = '/api/entries/{entry}.{ext}'.format( path = '/api/entries/{entry}.{ext}'.format(
entry=entry, ext=self.format) entry=entry, ext=self.format)
return self.query(path, "patch", **params) return self.query(path, "patch", **params)

View File

@@ -75,6 +75,7 @@ class TestWallabag(unittest.TestCase):
params = {'title': 'I change the title', params = {'title': 'I change the title',
'archive': 0, 'archive': 0,
'tags': ["bimbo", "pipo"], 'tags': ["bimbo", "pipo"],
'order': 'asc',
'star': 0, 'star': 0,
'delete': 0} 'delete': 0}
self.assertTrue(isinstance(entry, int), True) self.assertTrue(isinstance(entry, int), True)