78 lines
1.8 KiB
Python
78 lines
1.8 KiB
Python
import logging
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
from flask import Flask, send_from_directory, jsonify
|
|
import sys, os
|
|
|
|
from src.fetch_job import BGFetchJob
|
|
from src.score import get_social_scores_dict
|
|
from src.person import Person
|
|
from src.addressbook import Addressbook
|
|
|
|
from src import config
|
|
|
|
app = Flask(__name__)
|
|
|
|
addrbook = Addressbook()
|
|
addrbook.update_cross_refs()
|
|
|
|
daemon = BGFetchJob()
|
|
daemon.run(addrbook)
|
|
|
|
# root
|
|
@app.route("/")
|
|
def api_index():
|
|
return send_from_directory("static", "index.html")
|
|
|
|
# people
|
|
@app.route("/api/people")
|
|
def api_people():
|
|
return jsonify([p.as_dict() for p in addrbook.people])
|
|
|
|
@app.route("/api/people/<id>")
|
|
def api_person_by_id(id):
|
|
for person in addrbook.people:
|
|
if person.uid == id:
|
|
return jsonify(person.as_dict())
|
|
return jsonify({"error": "not found"}), 404
|
|
|
|
@app.route("/api/people/<id>/photo")
|
|
def api_photo_by_id(id):
|
|
for person in addrbook.people:
|
|
if person.uid == id:
|
|
return jsonify({
|
|
"photo":person.photo,
|
|
"format":person.photo_fmt,
|
|
})
|
|
return jsonify({"error": "not found"}), 404
|
|
|
|
# events
|
|
@app.route("/api/events")
|
|
def api_events():
|
|
return jsonify([e.as_dict() for e in addrbook.events])
|
|
|
|
@app.route("/api/events/<id>")
|
|
def api_event_by_id(id):
|
|
for event in addrbook.events:
|
|
if event.uid == id:
|
|
return jsonify(event.as_dict())
|
|
return jsonify({"error": "not found"}), 404
|
|
|
|
# parse fails
|
|
@app.route("/api/parse_errors")
|
|
def api_parse_errors():
|
|
return jsonify([{
|
|
"event_uid":m["event"].uid,
|
|
"name":str(m["name"])
|
|
} for m in addrbook.missing_contacts])
|
|
|
|
|
|
@app.route("/api/scores")
|
|
def api_scores():
|
|
return jsonify(get_social_scores_dict(addrbook))
|
|
|
|
if __name__ == "__main__":
|
|
app.run(host="0.0.0.0", port=5000, use_reloader=False)
|
|
pass
|