45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
import os
|
|
|
|
from flask import Flask, jsonify, render_template, request
|
|
|
|
from miniapp_qr_poc import generate_member_qr
|
|
|
|
app = Flask(__name__)
|
|
ADMIN_MEMBER_ID = 104880
|
|
|
|
|
|
@app.get("/")
|
|
def index():
|
|
return render_template("index.html")
|
|
|
|
|
|
@app.get("/healthz")
|
|
def healthz():
|
|
return jsonify({"ok": True})
|
|
|
|
|
|
@app.post("/api/generate")
|
|
def api_generate():
|
|
payload = request.get_json(silent=True)
|
|
if payload is None:
|
|
payload = request.form
|
|
|
|
member_id = ADMIN_MEMBER_ID
|
|
if payload and payload.get("member_id") not in (None, "", ADMIN_MEMBER_ID, str(ADMIN_MEMBER_ID)):
|
|
return jsonify({"ok": False, "error": f"only member_id={ADMIN_MEMBER_ID} is supported"}), 400
|
|
|
|
try:
|
|
result = generate_member_qr(member_id, include_data_url=True)
|
|
except ValueError as exc:
|
|
return jsonify({"ok": False, "error": str(exc)}), 400
|
|
except Exception as exc:
|
|
return jsonify({"ok": False, "error": str(exc)}), 500
|
|
|
|
return jsonify({"ok": True, **result})
|
|
|
|
|
|
if __name__ == "__main__":
|
|
host = os.getenv("HOST", "0.0.0.0")
|
|
port = int(os.getenv("PORT", "8000"))
|
|
app.run(host=host, port=port, debug=False)
|