import http.server import urllib.parse import generate_html class HTTPRequestHandler(http.server.BaseHTTPRequestHandler): server_version = 'Buranun/0.0' protocol_version = 'HTTP/1.1' def __send_html(self, html, *, status_code = 200): encoded = html.encode('utf-8') length = len(encoded) self.send_response(status_code) self.send_header('Content-Type', 'text/html; charset=utf-8') self.send_header('Content-Length', length) self.end_headers() self.wfile.write(encoded) def __send_404(self, path): html = generate_html.error_404(path) self.__send_html(html, status_code = 404) def do_GET(self): path = urllib.parse.unquote(self.path) path_components = [component for component in path.split('/') if component != ''] if len(path_components) == 0: # Path of format / → index html = generate_html.index() self.__send_html(html) elif len(path_components) == 1: # Path of format /foo/ → board index board_name = path_components[0] html = generate_html.board(board_name) self.__send_html(html) else: # Path not understood, send 404 self.__send_404(path) def main(): httpd = http.server.HTTPServer(('', 8000), HTTPRequestHandler) httpd.serve_forever() if __name__ == '__main__': main()