diff --git a/wallabag_api/wallabag.py b/wallabag_api/wallabag.py index 12221ad..07624bf 100644 --- a/wallabag_api/wallabag.py +++ b/wallabag_api/wallabag.py @@ -235,7 +235,7 @@ class Wallabag(object): url = '/api/entries/{entry}/tags.{ext}'.format(entry=entry, ext=self.format) return self.query(url, params, method="get") - def post_entry_tags(self, token, entry): + def post_entry_tags(self, token, entry, tags): """ POST /api/entries/{entry}/tags.{_format} @@ -244,9 +244,11 @@ class Wallabag(object): :param token: the token that identified the user to access the API :param entry: \w+ an integer The Entry ID - :return data related to the ext + :return result """ - params = {'token': token} + params = {'token': token, 'tags': []} + if isinstance(tags, list): + params['tags'] = tags url = '/api/entries/{entry}/tags.{ext}'.format(entry=entry, ext=self.format) return self.query(url, params, method="post") @@ -262,8 +264,8 @@ class Wallabag(object): :param tag: string The Tag :return data related to the ext """ - url = '/api/entries/{entry}/tags/{tag}.{ext}'.format(entry=entry, ext=self.format) params = {'token': token} + url = '/api/entries/{entry}/tags/{tag}.{ext}'.format(entry=entry, tag=tag, ext=self.format) return self.query(url, params, method="delete") def get_tags(self, token): diff --git a/wallabag_api/wallabag_test.py b/wallabag_api/wallabag_test.py index 846e50c..8a2a10e 100644 --- a/wallabag_api/wallabag_test.py +++ b/wallabag_api/wallabag_test.py @@ -8,36 +8,90 @@ class TestWallabag(unittest.TestCase): def setUp(self): self.host = "http://localhost:5000" self.api_key = '12334567890' - self.user = 'foxmask' - - def test_get(self): - w = Wallabag(self.host).get('ABCD', self.user) - self.assertIsInstance(w, dict) + self.user_agent = 'WallabagPython/1.0 +https://github.com/foxmask/wallabag-api' + self.format = 'json' def test_get_entries(self): - w = Wallabag(self.host).get('ABCD', self.user) + params = {'archive': 0, + 'star': 0, + 'delete': 0, + 'sort': 'created', + 'order': 'desc', + 'page': 1, + 'perPage': 30, + 'tags': []} + w = Wallabag(self.host).get_entries('ABCD', **params) self.assertIsInstance(w, dict) - def test_get_entry(self): - w = Wallabag(self.host).get_entry('ABCD', self.user, 1) - self.assertTrue(w, str) - def test_post_entries(self): + title = 'foobar title' url = ['http://foobar.com/', 'http://barfoo.com/'] tags = ['foo', 'bar'] - w = Wallabag(self.host).post_entries('ABCD', self.user, url, tags) + self.assertTrue(isinstance(title, str), True) + self.assertTrue(isinstance(tags, list), True) + w = Wallabag(self.host).post_entries('ABCD', url, title, tags) self.assertTrue(w, True) + def test_get_entry(self): + entry = 1 + self.assertTrue(isinstance(entry, int), True) + w = Wallabag(self.host).get_entry('ABCD', entry) + self.assertTrue(w, str) + def test_patch_entries(self): - entry = [] - entry.append('fourth content') - entry.append('fifth content') - w = Wallabag(self.host).patch_entries('ABCD', self.user, entry) + entry = 1 + params = {'title': '', + 'archive': 0, + 'tags': [], + 'star': 0, + 'delete': 0} + self.assertTrue(isinstance(entry, int), True) + self.assertTrue(isinstance(params, dict), True) + w = Wallabag(self.host).patch_entries('ABCD', entry, **params) self.assertTrue(w, True) - def test_delete_entry(self): + def test_delete_entries(self): entry = 1 - w = Wallabag(self.host).delete_entry('ABCD', self.user, entry) + self.assertTrue(isinstance(entry, int), True) + w = Wallabag(self.host).delete_entries('ABCD', entry) + self.assertTrue(w, True) + + def test_get_entry_tags(self): + entry = 1 + self.assertTrue(isinstance(entry, int), True) + w = Wallabag(self.host).get_entry_tags('ABCD', entry) + self.assertIsInstance(w, list) + + def test_post_entry_tags(self): + entry = 1 + self.assertTrue(isinstance(entry, int), True) + tags = ['foo', 'bar'] + self.assertTrue(isinstance(tags, list), True) + w = Wallabag(self.host).post_entry_tags('ABCD', entry, tags) + self.assertTrue(w, True) + + def test_delete_entry_tag(self): + entry = 1 + tag = 'tag1' + self.assertTrue(isinstance(entry, int), True) + self.assertTrue(isinstance(tag, str), True) + w = Wallabag(self.host).delete_entry_tag('ABCD', entry, tag) + self.assertTrue(w, True) + + def test_get_tags(self): + w = Wallabag(self.host).get_tags('ABCD') + self.assertTrue(w, True) + + def test_get_tag(self): + tag = 'tag1' + self.assertTrue(isinstance(tag, str), True) + w = Wallabag(self.host).get_tag('ABCD', tag) + self.assertTrue(w, True) + + def test_delete_tag(self): + tag = 'tag1' + self.assertTrue(isinstance(tag, str), True) + w = Wallabag(self.host).delete_tag('ABCD', tag) self.assertTrue(w, True) if __name__ == '__main__': diff --git a/wallabag_mock.py b/wallabag_mock.py index c10ca03..0b9936f 100644 --- a/wallabag_mock.py +++ b/wallabag_mock.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- __author__ = 'foxmask' import json -from flask import Flask, request +from flask import Flask """ The main purpose of this script is to replace v2.wallabag.org itself @@ -14,49 +14,93 @@ from flask import Flask, request app = Flask(__name__) -@app.route('/api/u//entries.json', methods=['GET']) -def get(user): - my_data = dict() - if user == 'foxmask': - my_data['entry'] = 'first content' - my_data['entry'] = 'second content' - return json.dumps(my_data,encoding='utf-8') -@app.route('/api/u//entries.json', methods=['GET']) -def get_entries(user): +@app.route('/api/entries.json', methods=['GET']) +def get_entries(): my_data = dict() - if user == 'foxmask': - my_data['entry'] = 'first content' - my_data['entry'] = 'second content' - return json.dumps(my_data,encoding='utf-8') + my_data['entry'] = 'first content' + my_data['entry'] = 'second content' + return json.dumps(my_data, encoding='utf-8') -@app.route('/api/u//entry/', methods=['GET']) -def get_entry(user, entry): + +@app.route('/api/entries.json', methods=['POST']) +def post_entries(): + url = '' + title = '' + tags = [] + return json.dumps(True) + + +@app.route('/api/entries/.json', methods=['GET']) +def get_entry(entry): my_data = dict() - if user == 'foxmask' and entry == 1: + if entry == 1: my_data['entry'] = 'third content' - return json.dumps(my_data,encoding='utf-8') + return json.dumps(my_data, encoding='utf-8') -@app.route('/api/u//entries.json', methods=['POST']) -def post_entries(user): - if user == 'foxmask': + +@app.route('/api/entries/.json', methods=['PATCH']) +def patch_entries(entry, **params): + entry = 1 + params = {'title': '', + 'archive': 0, + 'tags': [], + 'star': 0, + 'delete': 0} + + if entry == 1 and len(params) > 0: return json.dumps(True) else: return json.dumps(False) -@app.route('/api/u//entries.json', methods=['PATCH']) -def patch_entries(user): - if user == 'foxmask': + +@app.route('/api/entries/.json', methods=['DELETE']) +def delete_entries(entry): + if entry == 1: return json.dumps(True) else: return json.dumps(False) -@app.route('/api/u//entry/', methods=['DELETE']) -def delete_entry(user, entry): - if user == 'foxmask' and entry == 1: - return json.dumps(True) - else: - return json.dumps(False) + +@app.route('/api/entries//tags.json', methods=['GET']) +def get_entry_tags(entry): + my_data = dict() + if entry == 1: + my_data = ['tag1', 'tag2', 'tag3'] + return json.dumps(my_data, encoding='utf-8') + + +@app.route('/api/entries//tags.json', methods=['POST']) +def post_entry_tags(entry, **params): + my_data = dict() + if entry == 1: + my_data = ['tag1', 'tag2', 'tag3'] + return json.dumps(my_data, encoding='utf-8') + + +@app.route('/api/entries//tags/.json', methods=['DELETE']) +def delete_entry_tag(entry, tag): + return json.dumps(entry, tag, encoding='utf-8') + + +@app.route('/api/tags.json', methods=['GET']) +def get_tags(): + my_data = ['tag1', 'tag2', 'tag3'] + return json.dumps(my_data, encoding='utf-8') + + +@app.route('/api/tags/.json', methods=['GET']) +def get_tag(tag): + my_data = 'tag1' + return json.dumps(my_data, encoding='utf-8') + + +@app.route('/api/tags/.json', methods=['DELETE']) +def delete_tag(tag): + my_data = 'tag1' + return json.dumps(my_data, encoding='utf-8') + if __name__ == '__main__': - app.run(debug=True) \ No newline at end of file + app.run(debug=True) +