stacosys/stacosys/interface/api.py
2021-02-08 18:20:13 +01:00

59 lines
1.6 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging
from flask import abort, jsonify, request
from stacosys.interface import app
from stacosys.model.comment import Comment
logger = logging.getLogger(__name__)
@app.route("/ping", methods=["GET"])
def ping():
return "OK"
@app.route("/comments", methods=["GET"])
def query_comments():
comments = []
token = request.args.get("token", "")
if token != app.config.get("SITE_TOKEN"):
abort(401)
url = request.args.get("url", "")
logger.info("retrieve comments for url %s" % (url))
for comment in (
Comment.select(Comment)
.where((Comment.url == url) & (Comment.published.is_null(False)))
.order_by(+Comment.published)
):
d = {
"author": comment.author_name,
"content": comment.content,
"avatar": comment.author_gravatar,
"date": comment.published.strftime("%Y-%m-%d %H:%M:%S"),
}
if comment.author_site:
d["site"] = comment.author_site
logger.debug(d)
comments.append(d)
return jsonify({"data": comments})
@app.route("/comments/count", methods=["GET"])
def get_comments_count():
token = request.args.get("token", "")
if token != app.config.get("SITE_TOKEN"):
abort(401)
url = request.args.get("url", "")
if url:
count = (
Comment.select(Comment)
.where((Comment.url == url) & (Comment.published.is_null(False)))
.count()
)
else:
count = Comment.select(Comment).where(Comment.publishd.is_null(False)).count()
return jsonify({"count": count})