#!/usr/bin/env python3
"""HTTP server that serves poc.html plus the generated MojoJS bindings.

Paths under /gen/ are mapped to <CHROMIUM_OUT_DIR>/gen so the page can load
mojo_bindings_lite.js and the *.mojom-lite.js files needed to talk to
blink.mojom.DigitalIdentityRequest.
"""
import http.server
import os
import socketserver
import sys

PORT = 8080
HERE = os.path.dirname(os.path.abspath(__file__))
OUT_DIR = os.environ.get(
    "CHROMIUM_OUT_DIR", "/chromium/chromium/src/out/asan")
GEN_DIR = os.path.join(OUT_DIR, "gen")


class Handler(http.server.SimpleHTTPRequestHandler):
    def translate_path(self, path):
        p = path.split("?", 1)[0].split("#", 1)[0]
        if p.startswith("/gen/"):
            return os.path.join(GEN_DIR, p[len("/gen/"):])
        if p in ("/", ""):
            p = "/poc.html"
        return os.path.join(HERE, p.lstrip("/"))

    def log_message(self, fmt, *args):
        sys.stderr.write("[server] " + (fmt % args) + "\n")


if __name__ == "__main__":
    socketserver.TCPServer.allow_reuse_address = True
    with socketserver.TCPServer(("127.0.0.1", PORT), Handler) as httpd:
        print(f"serving on http://127.0.0.1:{PORT}/poc.html (gen={GEN_DIR})",
              flush=True)
        httpd.serve_forever()
