#!/usr/bin/env python3
"""
Simple static HTTP server for local testing of the HLS output and player page.

Usage:
  python3 src/serve_static.py --port 8082 --root .

It serves files from --root (default: project root). Ensure that:
  - ./src/player/index.html is accessible as /src/player/index.html
  - ./out/* is accessible as /out/*
"""

import argparse
import http.server
import os
import socketserver


def parse_args():
    parser = argparse.ArgumentParser(description="Static file server")
    parser.add_argument("--port", type=int, default=8082, help="Port to listen on")
    parser.add_argument("--root", type=str, default=".", help="Directory to serve")
    return parser.parse_args()


def main():
    args = parse_args()
    os.chdir(args.root)

    class CORSRequestHandler(http.server.SimpleHTTPRequestHandler):
        # Add permissive CORS headers for cross-origin XHR/fetch (e.g., headless player)
        def end_headers(self) -> None:
            self.send_header("Access-Control-Allow-Origin", "*")
            self.send_header("Access-Control-Allow-Methods", "GET, OPTIONS")
            self.send_header("Access-Control-Allow-Headers", "*")
            super().end_headers()

        def do_OPTIONS(self):  # noqa: N802
            self.send_response(204)
            self.end_headers()

    handler = CORSRequestHandler
    with socketserver.TCPServer(("0.0.0.0", args.port), handler) as httpd:
        print(f"[serve_static] Serving {os.getcwd()} at http://0.0.0.0:{args.port}")
        print("[serve_static] Try opening /src/player/index.html in your browser")
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print("\n[serve_static] Shutting down...")


if __name__ == "__main__":
    main()


