web.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #!/usr/bin/env python3
  2. from flask import Flask, abort, jsonify, request
  3. from db import db
  4. from linklist import LinkList
  5. app = Flask(__name__)
  6. d = db()
  7. BASEPATH = "/pymnts"
  8. @app.route(BASEPATH + '/source/add/', methods=['POST'])
  9. def add_source():
  10. selector = None
  11. rss = False
  12. json = request.get_json()
  13. if "selector" in json:
  14. selector = json["selector"]
  15. if "rss" in json:
  16. rss = json["rss"]
  17. if "category" not in json:
  18. json["category"] = 1
  19. json["category"] = int(json["category"])
  20. d.add_source(json["source"], rss, selector, json["name"], json["category"])
  21. return jsonify({'ok': "ok"})
  22. @app.route(BASEPATH + '/source/test/', methods=['POST'])
  23. def test_source():
  24. selector = None
  25. rss = False
  26. json = request.get_json()
  27. if "selector" in json and len(json["selector"]) > 0:
  28. selector = json["selector"]
  29. if "rss" in json:
  30. rss = json["rss"]
  31. l = LinkList(json["source"], selector, rss=rss)
  32. return jsonify({'links': l.links})
  33. @app.route(BASEPATH + '/articles/', methods=['POST'])
  34. @app.route(BASEPATH + '/articles', methods=['POST'])
  35. def filter_articles():
  36. return jsonify(d.filter_articles(request.get_json(), limit=15))
  37. @app.route(BASEPATH + '/keywords/', methods=['GET'])
  38. @app.route(BASEPATH + '/keywords', methods=['GET'])
  39. def get_keywords():
  40. return jsonify({'keywords': d.get_keywords_list()}) # limit
  41. @app.route(BASEPATH + '/keywords/', methods=['POST'])
  42. @app.route(BASEPATH + '/keywords', methods=['POST'])
  43. def add__keyword():
  44. json = request.get_json()
  45. if 'kw' not in json:
  46. abort(400)
  47. kw = json['kw']
  48. res = d.add_keyword(kw)
  49. return jsonify({})
  50. @app.route(BASEPATH + '/keywords/', methods=['PUT'])
  51. @app.route(BASEPATH + '/keywords', methods=['PUT'])
  52. def update_keyword():
  53. json = request.get_json()
  54. if 'kw' not in json:
  55. abort(400)
  56. kw = json['kw']
  57. res = d.update_keyword(kw)
  58. return jsonify({'keywords': d.get_keywords_list()})
  59. @app.route(BASEPATH + '/keywords/', methods=['DELETE'])
  60. @app.route(BASEPATH + '/keywords', methods=['DELETE'])
  61. def delete_keyword():
  62. json = request.get_json()
  63. if 'kw' not in json:
  64. abort(400)
  65. kw = json['kw']
  66. res = d.delete_keyword(kw)
  67. return jsonify({'keywords': d.get_keywords_list()})
  68. @app.route(BASEPATH + '/articles/', methods=['GET'])
  69. @app.route(BASEPATH + '/articles', methods=['GET'])
  70. def get_articles():
  71. return jsonify(d.filter_articles({}, limit=15))
  72. @app.route(BASEPATH + '/article/delete/<string:art_id>', methods=['GET'])
  73. def delete_article(art_id):
  74. if not d.delete_article(art_id):
  75. abort(401)
  76. return jsonify({'ok': "ok"})
  77. @app.route(BASEPATH + '/article/<string:art_id>', methods=['GET'])
  78. def get_article(art_id):
  79. art = d.article(art_id)
  80. if art is None:
  81. abort(401)
  82. return jsonify({'articles': art})
  83. @app.route(BASEPATH + '/sources/', methods=['GET'])
  84. @app.route(BASEPATH + '/sources', methods=['GET'])
  85. def get_sources():
  86. s = sorted(d.sources(), key=lambda k: k['name'].lower())
  87. return jsonify({'sources': s})
  88. @app.route(BASEPATH + '/sources/<string:source_id>', methods=['GET'])
  89. def get_source(source_id):
  90. source = d.sources(source_id)
  91. if source is None:
  92. abort(401)
  93. return jsonify({'source': source})
  94. @app.route(BASEPATH + '/add_source', methods=['POST'])
  95. def create_task():
  96. if not request.json or 'title' not in request.json:
  97. abort(400)
  98. task = {
  99. 'id': tasks[-1]['id'] + 1,
  100. 'title': request.json['title'],
  101. 'description': request.json.get('description', ""),
  102. 'done': False
  103. }
  104. tasks.append(task)
  105. return jsonify({'task': task}), 201
  106. if __name__ == '__main__':
  107. app.run(host="0.0.0.0", debug=True)
  108. #app.run(host="0.0.0.0", debug=False)