complet modif for new API

This commit is contained in:
Olivier Demah
2015-02-08 00:06:55 +01:00
parent 70ce7bacd1
commit 372b602e39
3 changed files with 152 additions and 52 deletions

View File

@@ -235,7 +235,7 @@ class Wallabag(object):
url = '/api/entries/{entry}/tags.{ext}'.format(entry=entry, ext=self.format) url = '/api/entries/{entry}/tags.{ext}'.format(entry=entry, ext=self.format)
return self.query(url, params, method="get") 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} 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 token: the token that identified the user to access the API
:param entry: \w+ an integer The Entry ID :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) url = '/api/entries/{entry}/tags.{ext}'.format(entry=entry, ext=self.format)
return self.query(url, params, method="post") return self.query(url, params, method="post")
@@ -262,8 +264,8 @@ class Wallabag(object):
:param tag: string The Tag :param tag: string The Tag
:return data related to the ext :return data related to the ext
""" """
url = '/api/entries/{entry}/tags/{tag}.{ext}'.format(entry=entry, ext=self.format)
params = {'token': token} 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") return self.query(url, params, method="delete")
def get_tags(self, token): def get_tags(self, token):

View File

@@ -8,36 +8,90 @@ class TestWallabag(unittest.TestCase):
def setUp(self): def setUp(self):
self.host = "http://localhost:5000" self.host = "http://localhost:5000"
self.api_key = '12334567890' self.api_key = '12334567890'
self.user = 'foxmask' self.user_agent = 'WallabagPython/1.0 +https://github.com/foxmask/wallabag-api'
self.format = 'json'
def test_get(self):
w = Wallabag(self.host).get('ABCD', self.user)
self.assertIsInstance(w, dict)
def test_get_entries(self): 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) 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): def test_post_entries(self):
title = 'foobar title'
url = ['http://foobar.com/', 'http://barfoo.com/'] url = ['http://foobar.com/', 'http://barfoo.com/']
tags = ['foo', 'bar'] 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) 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): def test_patch_entries(self):
entry = [] entry = 1
entry.append('fourth content') params = {'title': '',
entry.append('fifth content') 'archive': 0,
w = Wallabag(self.host).patch_entries('ABCD', self.user, entry) '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) self.assertTrue(w, True)
def test_delete_entry(self): def test_delete_entries(self):
entry = 1 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) self.assertTrue(w, True)
if __name__ == '__main__': if __name__ == '__main__':

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
__author__ = 'foxmask' __author__ = 'foxmask'
import json import json
from flask import Flask, request from flask import Flask
""" """
The main purpose of this script is to replace v2.wallabag.org itself 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 = Flask(__name__)
@app.route('/api/u/<user>/entries.json', methods=['GET'])
def get(user): @app.route('/api/entries.json', methods=['GET'])
def get_entries():
my_data = dict() my_data = dict()
if user == 'foxmask':
my_data['entry'] = 'first content' my_data['entry'] = 'first content'
my_data['entry'] = 'second content' my_data['entry'] = 'second content'
return json.dumps(my_data, encoding='utf-8') return json.dumps(my_data, encoding='utf-8')
@app.route('/api/u/<user>/entries.json', methods=['GET'])
def get_entries(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/<user>/entry/<int:entry>', methods=['GET']) @app.route('/api/entries.json', methods=['POST'])
def get_entry(user, entry): def post_entries():
url = ''
title = ''
tags = []
return json.dumps(True)
@app.route('/api/entries/<int:entry>.json', methods=['GET'])
def get_entry(entry):
my_data = dict() my_data = dict()
if user == 'foxmask' and entry == 1: if entry == 1:
my_data['entry'] = 'third content' 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/<user>/entries.json', methods=['POST'])
def post_entries(user): @app.route('/api/entries/<int:entry>.json', methods=['PATCH'])
if user == 'foxmask': 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) return json.dumps(True)
else: else:
return json.dumps(False) return json.dumps(False)
@app.route('/api/u/<user>/entries.json', methods=['PATCH'])
def patch_entries(user): @app.route('/api/entries/<int:entry>.json', methods=['DELETE'])
if user == 'foxmask': def delete_entries(entry):
if entry == 1:
return json.dumps(True) return json.dumps(True)
else: else:
return json.dumps(False) return json.dumps(False)
@app.route('/api/u/<user>/entry/<int:entry>', methods=['DELETE'])
def delete_entry(user, entry): @app.route('/api/entries/<int:entry>/tags.json', methods=['GET'])
if user == 'foxmask' and entry == 1: def get_entry_tags(entry):
return json.dumps(True) my_data = dict()
else: if entry == 1:
return json.dumps(False) my_data = ['tag1', 'tag2', 'tag3']
return json.dumps(my_data, encoding='utf-8')
@app.route('/api/entries/<int:entry>/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/<int:entry>/tags/<tag>.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/<tag>.json', methods=['GET'])
def get_tag(tag):
my_data = 'tag1'
return json.dumps(my_data, encoding='utf-8')
@app.route('/api/tags/<tag>.json', methods=['DELETE'])
def delete_tag(tag):
my_data = 'tag1'
return json.dumps(my_data, encoding='utf-8')
if __name__ == '__main__': if __name__ == '__main__':
app.run(debug=True) app.run(debug=True)