#!/usr/bin/env python3
"""Local test server for browser-use Try Tools test. Logs POSTs to posts.jsonl."""
import json, hashlib
from http.server import BaseHTTPRequestHandler, HTTPServer
from pathlib import Path
from urllib.parse import parse_qs
ROOT = Path(__file__).resolve().parent
LOG = ROOT.parent / "server-posts.jsonl"
INDEX = (ROOT / "index.html").read_bytes()

def code_for(fields):
    blob = "\n".join(f"{k}={fields[k]}" for k in sorted(fields))
    return hashlib.sha256(blob.encode()).hexdigest()[:8].upper()

class H(BaseHTTPRequestHandler):
    def log_message(self, fmt, *args):
        print("[%s] %s" % (self.log_date_time_string(), fmt % args), flush=True)
    def do_GET(self):
        if self.path in ("/", "/index.html"):
            self.send_response(200); self.send_header("Content-Type","text/html; charset=utf-8"); self.end_headers(); self.wfile.write(INDEX)
        elif self.path == "/help":
            self.send_response(200); self.send_header("Content-Type","text/plain"); self.end_headers(); self.wfile.write(b"Help page (decoy).")
        else:
            self.send_response(404); self.end_headers()
    def do_POST(self):
        n = int(self.headers.get("Content-Length", 0))
        raw = self.rfile.read(n).decode("utf-8", "replace")
        qs = {k: v[0] for k,v in parse_qs(raw, keep_blank_values=True).items()}
        rec = {"path": self.path, "fields": qs}
        with LOG.open("a") as f:
            f.write(json.dumps(rec) + "\n")
        if self.path == "/order":
            code = code_for({k: qs.get(k,"") for k in ["name","email","country","qty","speed","gift","notes","part"]})
            body = f"<html><body><h1>Order received</h1><p>Confirmation code: <b id='code'>{code}</b></p></body></html>".encode()
            self.send_response(200); self.send_header("Content-Type","text/html; charset=utf-8"); self.end_headers(); self.wfile.write(body)
        elif self.path == "/newsletter":
            self.send_response(200); self.send_header("Content-Type","text/html"); self.end_headers(); self.wfile.write(b"<html><body><h1>Subscribed</h1></body></html>")
        else:
            self.send_response(404); self.end_headers()

if __name__ == "__main__":
    port = 8768
    print(f"serving on http://127.0.0.1:{port}/", flush=True)
    HTTPServer(("127.0.0.1", port), H).serve_forever()
