app.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import json
  2. import atexit
  3. import datetime
  4. from flask import Flask, jsonify, request
  5. DB_FILE = "vacation.db"
  6. last_update = datetime.datetime.now()
  7. app = Flask(__name__)
  8. app.config["APPLICATION_ROOT"] = "/vacation/api"
  9. app.url_map.strict_slashes = False
  10. with open(DB_FILE) as infile:
  11. db = json.load(infile)
  12. @atexit.register
  13. def save_db(prefix=""):
  14. with open(prefix + DB_FILE, "w") as outfile:
  15. json.dump(db, outfile)
  16. def backup_db():
  17. save_db(f"backup-{datetime.datetime.now().isoformat()}-")
  18. @app.route("/")
  19. def health():
  20. return jsonify({"status": "healthy"})
  21. @app.route("/status", methods=["GET", "POST"])
  22. def status():
  23. if request.method == "GET":
  24. return jsonify({
  25. "lastUpdated": last_update.iso_format(),
  26. "availability": [
  27. {
  28. "name": name,
  29. "availability": avail,
  30. } for name, avail in db.items()
  31. ],
  32. })
  33. body = request.get_json()
  34. print(body)
  35. last_update = datetime.datetime.now()
  36. # TODO actually implement updates
  37. return 204, ""