44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import json
|
|
|
|
DEFAULT_STATE = {"text": "", "image_url": ""}
|
|
|
|
def _read_state():
|
|
try:
|
|
with open("/app/state.json", "r") as f:
|
|
return json.load(f)
|
|
except (FileNotFoundError, json.JSONDecodeError):
|
|
return dict(DEFAULT_STATE)
|
|
|
|
def _write_state(state):
|
|
with open("/app/state.json", "w") as f:
|
|
json.dump(state, f)
|
|
|
|
def main(args):
|
|
route = args.get("route")
|
|
|
|
body = args.get("body")
|
|
body = json.loads(body) if body else {}
|
|
|
|
if route.startswith("push"):
|
|
if route == "push_text":
|
|
current = _read_state()
|
|
current["text"] = body.get("text", "")
|
|
_write_state(current)
|
|
return {"status": "success"}
|
|
elif route == "push_image_url":
|
|
current = _read_state()
|
|
current["image_url"] = body.get("image_url", "")
|
|
_write_state(current)
|
|
return {"status": "success"}
|
|
else:
|
|
return {"status": "error", "message": "Unknown push route"}
|
|
elif route.startswith("pull"):
|
|
current = _read_state()
|
|
if route == "pull_text":
|
|
return {"status": "success", "text": current.get("text", "")}
|
|
elif route == "pull_image_url":
|
|
return {"status": "success", "image_url": current.get("image_url", "")}
|
|
elif route == "pull_full":
|
|
return {"status": "success", "state": current}
|
|
else:
|
|
return {"status": "error", "message": "Unknown pull route"} |