#!/usr/bin/env python3
"""Mini app server: serves the form and accepts POST submissions."""
import json
import os
import sys
from http.server import HTTPServer, SimpleHTTPRequestHandler
from urllib.parse import urlparse

SUBMIT_FILE = "/home/mikael/.openclaw/workspace/state/mini-app-submissions.jsonl"
FORM_DIR = "/home/mikael/.openclaw/workspace"

class MiniAppHandler(SimpleHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, directory=FORM_DIR, **kwargs)

    def do_POST(self):
        if self.path != "/submit":
            self.send_error(404)
            return

        content_length = int(self.headers.get('Content-Length', 0))
        body = self.rfile.read(content_length)
        try:
            data = json.loads(body)
            data["receivedAt"] = self.date_time_string()
        except Exception:
            data = {"raw": body.decode("utf-8", errors="replace"), "receivedAt": self.date_time_string()}

        os.makedirs(os.path.dirname(SUBMIT_FILE), exist_ok=True)
        with open(SUBMIT_FILE, "a") as f:
            f.write(json.dumps(data, ensure_ascii=False) + "\n")

        self.send_response(200)
        self.send_header("Content-Type", "application/json")
        self.send_header("Access-Control-Allow-Origin", "*")
        self.end_headers()
        self.wfile.write(json.dumps({"ok": True, "message": "Received!"}).encode())

    def do_OPTIONS(self):
        self.send_response(200)
        self.send_header("Access-Control-Allow-Origin", "*")
        self.send_header("Access-Control-Allow-Methods", "POST, OPTIONS")
        self.send_header("Access-Control-Allow-Headers", "Content-Type")
        self.end_headers()

if __name__ == "__main__":
    port = int(sys.argv[1]) if len(sys.argv) > 1 else 8765
    server = HTTPServer(("0.0.0.0", port), MiniAppHandler)
    print(f"Serving on port {port} (submit → POST /submit)")
    server.serve_forever()
