Files

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