CoolFace
Apppublic

chwellofficial/nt360Slides

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
test_server.py79 linesDownload Raw Back to root
1"""2Presenton Version Server (test/dev stub)3 4This simulates the remote version-check endpoint that the Electron app polls.5In production, replace UPDATE_SERVER_URL in the Electron app with your hosted URL.6 7Usage:8    python test_server.py [--port 8765]9 10Endpoint:11    GET /versions  -> JSON with latest version and download info12"""13 14import json15import argparse16from http.server import BaseHTTPRequestHandler, HTTPServer17from urllib.parse import urlparse18 19VERSIONS = {20    "latest": "0.7.0",21    "versions": [22        "0.5.0",23        "0.6.0",24        "0.6.1-beta",25        "0.7.0",26    ],27    "download_url": "https://github.com/presenton/presenton/releases/latest",28    "release_notes": "Bug fixes, performance improvements, and new AI model support.",29}30 31 32class VersionHandler(BaseHTTPRequestHandler):33    def do_GET(self):34        parsed = urlparse(self.path)35 36        if parsed.path == "/versions":37            body = json.dumps(VERSIONS, indent=2).encode()38            self.send_response(200)39            self.send_header("Content-Type", "application/json")40            self.send_header("Content-Length", str(len(body)))41            self.send_header("Access-Control-Allow-Origin", "*")42            self.end_headers()43            self.wfile.write(body)44        else:45            self.send_response(404)46            self.end_headers()47            self.wfile.write(b'{"error": "Not found"}')48 49    def do_OPTIONS(self):50        self.send_response(200)51        self.send_header("Access-Control-Allow-Origin", "*")52        self.send_header("Access-Control-Allow-Methods", "GET, OPTIONS")53        self.end_headers()54 55    def log_message(self, format, *args):56        print(f"[VersionServer] {self.address_string()} - {format % args}", flush=True)57 58 59def main():60    parser = argparse.ArgumentParser(description="Presenton version check server")61    parser.add_argument("--port", type=int, default=8765, help="Port to listen on")62    parser.add_argument("--host", type=str, default="0.0.0.0", help="Host to bind to")63    args = parser.parse_args()64 65    server = HTTPServer((args.host, args.port), VersionHandler)66    print(f"Presenton version server running at http://{args.host}:{args.port}", flush=True)67    print(f"  GET /versions  -> version information", flush=True)68    print(f"  Current 'latest' set to: {VERSIONS['latest']}", flush=True)69    print("Press Ctrl+C to stop.", flush=True)70 71    try:72        server.serve_forever()73    except KeyboardInterrupt:74        print("\nServer stopped.", flush=True)75 76 77if __name__ == "__main__":78    main()79