#!/usr/bin/env python3
"""Serve the desync POC.  Regenerates desync.zip on start."""
import http.server
import os
import subprocess
import sys

HERE = os.path.dirname(os.path.abspath(__file__))
PORT = int(sys.argv[1]) if len(sys.argv) > 1 else 8080

# Ensure the crafted ZIP exists.
zip_path = os.path.join(HERE, "desync.zip")
if not os.path.exists(zip_path):
    subprocess.check_call([sys.executable, os.path.join(HERE, "make_zip.py"), zip_path])


class Handler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *a, **kw):
        super().__init__(*a, directory=HERE, **kw)

    def do_GET(self):
        for name in ("desync.zip", "control.zip"):
            if self.path.startswith("/" + name):
                with open(os.path.join(HERE, name), "rb") as f:
                    data = f.read()
                self.send_response(200)
                self.send_header("Content-Type", "application/zip")
                self.send_header("Content-Disposition",
                                 'attachment; filename="%s"' % name)
                self.send_header("Content-Length", str(len(data)))
                self.end_headers()
                self.wfile.write(data)
                return
        return super().do_GET()


print(f"serving on http://127.0.0.1:{PORT}/")
http.server.HTTPServer(("127.0.0.1", PORT), Handler).serve_forever()
