22webtask HTTP Server
33"""
44
5- import os
65import webbrowser
76import threading
8- import time
97from http .server import HTTPServer , SimpleHTTPRequestHandler
108from pathlib import Path
9+ from typing import Any , Tuple , Optional , Type , TypeVar
1110
1211
13- class webtaskHandler (SimpleHTTPRequestHandler ):
14- """Custom HTTP handler for WebTop"""
12+ _RequestHandlerT = TypeVar ('_RequestHandlerT' , bound = SimpleHTTPRequestHandler )
1513
16- def __init__ (self , * args , ** kwargs ):
17- # Set the directory to serve files from
14+
15+ class WebTaskHandler (SimpleHTTPRequestHandler ):
16+ """Custom HTTP handler for webtask"""
17+ def __init__ (self , * args : Any , ** kwargs : Any ) -> None :
1818 static_dir = Path (__file__ ).parent / "static"
1919 super ().__init__ (* args , directory = str (static_dir ), ** kwargs )
2020
21- def end_headers (self ):
22- # Add custom headers
23- self .send_header ('Cache-Control' , 'no-cache, no-store, must-revalidate' )
21+ def end_headers (self ) -> None :
22+ self .send_header (
23+ 'Cache-Control' ,
24+ 'no-cache, no-store, must-revalidate'
25+ )
2426 self .send_header ('Pragma' , 'no-cache' )
2527 self .send_header ('Expires' , '0' )
2628 super ().end_headers ()
2729
28- def log_message (self , format , * args ):
29- # Suppress default logging for cleaner output
30+ def log_message (self , format : str , * args : Any ) -> None :
3031 pass
3132
3233
33- class WebTopServer :
34- """WebTop server wrapper"""
35-
36- def __init__ (self , host = "localhost" , port = 8000 , open_browser = True ):
34+ class webtaskServer :
35+ """webtask server wrapper"""
36+ def __init__ (self , host : str = "localhost" , port : int = 8000 , open_browser : bool = True ) -> None :
3737 self .host = host
3838 self .port = port
3939 self .open_browser = open_browser
4040 self .server = None
4141
42- def run (self ):
43- """Start the WebTop server"""
42+ def run (self ) -> None :
4443 try :
45- self .server = HTTPServer ((self .host , self .port ), WebTopHandler )
44+ self .server = HTTPServer ((self .host , self .port ), WebTaskHandler )
4645 url = f"http://{ self .host } :{ self .port } "
47-
48- print (f"🚀 Starting WebTop server at { url } " )
49- print ("📊 WebTop is running! Press Ctrl+C to stop." )
50-
46+ print (f"🚀 Starting webtask server at { url } " )
47+ print ("📊 webtask is running! Press Ctrl+C to stop." )
5148 if self .open_browser :
52- # Open browser after a small delay
5349 threading .Timer (1.0 , lambda : webbrowser .open (url )).start ()
54-
5550 self .server .serve_forever ()
56-
5751 except OSError as e :
58- if e .errno == 48 : # Address already in use
59- print (f"❌ Port { self .port } is already in use. Try a different port with --port" )
52+ if hasattr (e , 'errno' ) and e .errno in (48 , 98 ):
53+ print (
54+ f"❌ Port { self .port } is already in use. "
55+ "Try a different port with --port"
56+ )
6057 else :
6158 raise
6259 except KeyboardInterrupt :
6360 self .stop ()
6461
65- def stop (self ):
66- """Stop the server"""
62+ def stop (self ) -> None :
6763 if self .server :
68- print ("\n 🛑 Stopping WebTop server..." )
64+ print ("\n 🛑 Stopping webtask server..." )
6965 self .server .shutdown ()
70- self .server .server_close ()
66+ self .server .server_close ()
0 commit comments