diff --git a/wallabag_api/wallabag.py b/wallabag_api/wallabag.py index e863905..ff85448 100644 --- a/wallabag_api/wallabag.py +++ b/wallabag_api/wallabag.py @@ -66,20 +66,21 @@ class Wallabag(object): necessary things to query the API :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': - r = requests.get(self.get_host() + path, params=params) + r = requests.get(full_path, params=params) elif method == 'post': - r = requests.post(self.get_host() + path, data=params) + r = requests.post(full_path, data=params) elif method == 'patch': - r = requests.patch(self.get_host() + path, data=params) + r = requests.patch(full_path, data=params) elif method == 'delete': - r = requests.delete(self.get_host() + path, headers=params) + r = requests.delete(full_path, headers=params) 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) else: - raise ValueError('method expected : get, post, patch, delete or put') + raise ValueError('method expected: get, post, patch, delete, put') @staticmethod def handle_json_response(responses): @@ -99,6 +100,11 @@ class Wallabag(object): logging.error("Wallabag: {error}".format(error=error_json)) 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): """ @@ -119,24 +125,33 @@ class Wallabag(object): :return data related to the ext """ # default values - params = {'access_token': self.token, - 'archive': 0, - 'star': 0, - 'delete': 0, - 'sort': 'created', - 'order': 'desc', - 'page': 1, - 'perPage': 30, - 'tags': []} + params = dict({'access_token': self.token, + 'archive': 0, + 'star': 0, + 'delete': 0, + 'sort': 'created', + 'order': 'desc', + 'page': 1, + 'perPage': 30, + '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): params['page'] = kwargs['page'] if 'perPage' in kwargs and isinstance(kwargs['perPage'], int): @@ -180,7 +195,8 @@ class Wallabag(object): :return data related to the ext """ 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) def patch_entries(self, entry, **kwargs): @@ -207,16 +223,29 @@ class Wallabag(object): 'tags': [], 'star': 0, 'delete': 0} + if 'title' in kwargs: params['title'] = kwargs['title'] if 'tags' in kwargs and isinstance(kwargs['tags'], list): params['tags'] = ', '.join(kwargs['tags']) - 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']) + + 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) + path = '/api/entries/{entry}.{ext}'.format( entry=entry, ext=self.format) return self.query(path, "patch", **params) diff --git a/wallabag_api/wallabag_test.py b/wallabag_api/wallabag_test.py index 691cfda..e07d201 100644 --- a/wallabag_api/wallabag_test.py +++ b/wallabag_api/wallabag_test.py @@ -75,6 +75,7 @@ class TestWallabag(unittest.TestCase): params = {'title': 'I change the title', 'archive': 0, 'tags': ["bimbo", "pipo"], + 'order': 'asc', 'star': 0, 'delete': 0} self.assertTrue(isinstance(entry, int), True)