#!/usr/bin/env python3 import json import atexit import datetime from flask import Flask, jsonify, request from flask_cors import CORS DB_FILE = "vacation.db" last_update = datetime.datetime.now() app = Flask(__name__) CORS(app) app.config["APPLICATION_ROOT"] = "/vacation/api" app.url_map.strict_slashes = False try: with open(DB_FILE) as infile: db = json.load(infile) except FileNotFoundError: db = {} @atexit.register def save_db(prefix=""): with open(prefix + DB_FILE, "w") as outfile: json.dump(db, outfile) def backup_db(): save_db(f"backup-{datetime.datetime.now().isoformat()}-") @app.route("/") def health(): return jsonify({"status": "healthy"}) @app.route("/availability", methods=["GET", "POST"]) def status(): global last_update if request.method == "GET": return jsonify({ "lastUpdated": last_update.isoformat(), "availability": [ { "month": month, "day": day, "availability": avail, } for (month, day), avail in db.items() ], }) body = request.get_json() print(body) last_update = datetime.datetime.now() # TODO actually implement updates return "", 204 if __name__ == "__main__": app.run("0.0.0.0", 5000, debug=True)