from __future__ import annotations import json from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer from pathlib import Path RESULTS_DIR = Path(".cache/browser-results") class BrowserHandler(SimpleHTTPRequestHandler): def do_POST(self) -> None: if self.path != "/benchmark-result": self.send_error(404) return length = int(self.headers.get("Content-Length", "0")) if length <= 0 or length > 1_000_000: self.send_error(400, "invalid result size") return result = json.loads(self.rfile.read(length)) bundle = result.get("bundle") if bundle not in { "compact-qdq", "compact-fp16", "compact-unified-qdq", "compact-unified-gather", "balanced-unified-qdq", "balanced-unified-gather", "balanced-qdq", "lossless", }: self.send_error(400, "unknown bundle") return RESULTS_DIR.mkdir(parents=True, exist_ok=True) destination = RESULTS_DIR / f"hayai13-{bundle}.json" destination.write_text(json.dumps(result, ensure_ascii=False, indent=2) + "\n") self.send_response(204) self.end_headers() def end_headers(self) -> None: self.send_header("Cross-Origin-Opener-Policy", "same-origin") self.send_header("Cross-Origin-Embedder-Policy", "require-corp") self.send_header("Cross-Origin-Resource-Policy", "same-origin") super().end_headers() if __name__ == "__main__": ThreadingHTTPServer(("127.0.0.1", 8765), BrowserHandler).serve_forever()