#!/usr/bin/env python3
"""Serves poc.html plus the generated mojom JS bindings under /gen/."""
import http.server
import os
import socketserver
import sys

PORT = 8080
HERE = os.path.dirname(os.path.abspath(__file__))
GEN_DIR = os.environ.get(
    'CHROMIUM_GEN_DIR', '/chromium/chromium/src/out/asan/gen')


class Handler(http.server.SimpleHTTPRequestHandler):
  extensions_map = {
      **http.server.SimpleHTTPRequestHandler.extensions_map,
      '.js': 'text/javascript',
      '.m.js': 'text/javascript',
      '.html': 'text/html',
  }

  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/'):])
    return os.path.join(HERE, p.lstrip('/'))

  def guess_type(self, path):
    if path.endswith('.js'):
      return 'text/javascript'
    return super().guess_type(path)

  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()
