mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-30 04:33:00 +02:00
29 lines
807 B
Python
29 lines
807 B
Python
"""
|
|
Basic file server over HTTP
|
|
"""
|
|
import concurrent.futures
|
|
import functools
|
|
import http.server
|
|
import socket
|
|
|
|
|
|
class FileServer(http.server.HTTPServer):
|
|
"""Open web server on (address, port) serving files from directory"""
|
|
class RequestHandler(http.server.SimpleHTTPRequestHandler):
|
|
def log_message(self, *args, **kwargs):
|
|
pass
|
|
|
|
address_family = socket.AF_INET6
|
|
|
|
def __init__(self, server_address, directory):
|
|
rh = functools.partial(FileServer.RequestHandler, directory=directory)
|
|
self.__tp = concurrent.futures.ThreadPoolExecutor(max_workers=1)
|
|
super().__init__(server_address, rh)
|
|
|
|
def __enter__(self):
|
|
self.__tp.submit(self.serve_forever)
|
|
|
|
def __exit__(self, _, __, ___):
|
|
self.shutdown()
|
|
self.__tp.shutdown()
|