aboutsummaryrefslogtreecommitdiff
path: root/pyaggr3g470r/rest.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyaggr3g470r/rest.py')
-rw-r--r--pyaggr3g470r/rest.py67
1 files changed, 59 insertions, 8 deletions
diff --git a/pyaggr3g470r/rest.py b/pyaggr3g470r/rest.py
index 1c597bdd..4b67a419 100644
--- a/pyaggr3g470r/rest.py
+++ b/pyaggr3g470r/rest.py
@@ -30,7 +30,7 @@ from functools import wraps
from flask import g, Response, request, session, jsonify
from flask.ext.restful import Resource, reqparse
-from pyaggr3g470r import api
+from pyaggr3g470r import api, db
from pyaggr3g470r.models import User, Article
def authenticate(func):
@@ -61,7 +61,7 @@ def authenticate(func):
{'WWWAuthenticate':'Basic realm="Login Required"'})
return wrapper
-class ArticleAPI(Resource):
+class ArticleListAPI(Resource):
"""
Defines a RESTful API for Article elements.
"""
@@ -71,11 +71,11 @@ class ArticleAPI(Resource):
#self.reqparse = reqparse.RequestParser()
#self.reqparse.add_argument('item_id', type = str, location = 'json')
#self.reqparse.add_argument('item_title', type = unicode, location = 'json')
- super(ArticleAPI, self).__init__()
+ super(ArticleListAPI, self).__init__()
def get(self):
"""
- Get the list of articles.
+ Returns a list of articles.
"""
feeds = {feed.id: feed.title for feed in g.user.feeds if feed.enabled}
articles = Article.query.filter(Article.feed_id.in_(feeds.keys()),
@@ -94,32 +94,83 @@ class ArticleAPI(Resource):
articles = articles.limit(limit)
return jsonify(result= [{
+ "id": article.id,
"title": article.title,
"link": article.link,
"content": article.content,
"readed": article.readed,
"like": article.like,
"date": article.date,
- "retrieved_date": article.retrieved_date
+ "retrieved_date": article.retrieved_date,
+ "feed_id": article.source.id,
+ "feed_name": article.source.title
}
for article in articles]
)
def post(self):
+ pass
+
+ def put(self):
+ pass
+
+ def delete(self):
+ pass
+
+class ArticleAPI(Resource):
+ """
+ Defines a RESTful API for Article elements.
+ """
+ method_decorators = [authenticate]
+
+ def __init__(self):
+ super(ArticleAPI, self).__init__()
+
+ def get(self, id=None):
+ """
+ Returns an article.
+ """
+ result = []
+ if id is not None:
+ article = Article.query.filter(Article.user_id == g.user.id, Article.id == id).first()
+ if article is not None:
+ if not article.readed:
+ article.readed = True
+ db.session.commit()
+ result.append(article)
+
+ return jsonify(result= [{
+ "id": article.id,
+ "title": article.title,
+ "link": article.link,
+ "content": article.content,
+ "readed": article.readed,
+ "like": article.like,
+ "date": article.date,
+ "retrieved_date": article.retrieved_date,
+ "feed_id": article.source.id,
+ "feed_name": article.source.title
+ }
+ for article in result]
+ )
+
+ def post(self, id):
"""
Update an article.
"""
pass
- def put(self):
+ def put(self, id):
"""
Create an article.
"""
pass
- def delete(self):
+ def delete(self, id):
"""
+ Delete an article.
"""
pass
-api.add_resource(ArticleAPI, '/articles.json/', endpoint = 'articles.json')
+api.add_resource(ArticleListAPI, '/api/v1.0/articles', endpoint = 'articles.json')
+api.add_resource(ArticleAPI, '/api/v1.0/articles/<int:id>', endpoint = 'article.json')
bgstack15