1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/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": [
- {
- "name": name,
- "availability": avail,
- } for name, 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)
|