"""
Presenton Version Server (test/dev stub)

This simulates the remote version-check endpoint that the Electron app polls.
In production, replace UPDATE_SERVER_URL in the Electron app with your hosted URL.

Usage:
    python test_server.py [--port 8765]

Endpoint:
    GET /versions  -> JSON with latest version and download info
"""

import json
import argparse
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse

VERSIONS = {
    "latest": "0.7.0",
    "versions": [
        "0.5.0",
        "0.6.0",
        "0.6.1-beta",
        "0.7.0",
    ],
    "download_url": "https://github.com/presenton/presenton/releases/latest",
    "release_notes": "Bug fixes, performance improvements, and new AI model support.",
}


class VersionHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        parsed = urlparse(self.path)

        if parsed.path == "/versions":
            body = json.dumps(VERSIONS, indent=2).encode()
            self.send_response(200)
            self.send_header("Content-Type", "application/json")
            self.send_header("Content-Length", str(len(body)))
            self.send_header("Access-Control-Allow-Origin", "*")
            self.end_headers()
            self.wfile.write(body)
        else:
            self.send_response(404)
            self.end_headers()
            self.wfile.write(b'{"error": "Not found"}')

    def do_OPTIONS(self):
        self.send_response(200)
        self.send_header("Access-Control-Allow-Origin", "*")
        self.send_header("Access-Control-Allow-Methods", "GET, OPTIONS")
        self.end_headers()

    def log_message(self, format, *args):
        print(f"[VersionServer] {self.address_string()} - {format % args}", flush=True)


def main():
    parser = argparse.ArgumentParser(description="Presenton version check server")
    parser.add_argument("--port", type=int, default=8765, help="Port to listen on")
    parser.add_argument("--host", type=str, default="0.0.0.0", help="Host to bind to")
    args = parser.parse_args()

    server = HTTPServer((args.host, args.port), VersionHandler)
    print(f"Presenton version server running at http://{args.host}:{args.port}", flush=True)
    print(f"  GET /versions  -> version information", flush=True)
    print(f"  Current 'latest' set to: {VERSIONS['latest']}", flush=True)
    print("Press Ctrl+C to stop.", flush=True)

    try:
        server.serve_forever()
    except KeyboardInterrupt:
        print("\nServer stopped.", flush=True)


if __name__ == "__main__":
    main()