from flask import Flask, request, jsonify, abort
import os

app = Flask(__name__)

API_KEY = os.environ.get("API_KEY", "change-me")
state = {
    "brightness": 0.5,
    "density": 0.5,
    "tension": 0.5,
    "motion": 0.5,
}

def check_key():
    key = request.headers.get("X-API-Key")
    if key != API_KEY:
        abort(401)

@app.get("/state")
def get_state():
    check_key()
    return jsonify(state)

@app.post("/update")
def update_state():
    check_key()
    data = request.get_json(force=True) or {}

    for k in state:
        if k in data:
            try:
                state[k] = float(data[k])
            except (TypeError, ValueError):
                pass

    return jsonify({"ok": True, "state": state})

if __name__ == "__main__":
    app.run(host="127.0.0.1", port=8000)
