def main(): class PoolHTTPServer(PoolMixIn, HTTPServer): pool = ThreadPoolExecutor(max_workers=2) test(HandlerClass=SimpleHTTPRequestHandler, ServerClass=PoolHTTPServer)
#!/usr/bin/env python try: # Python 3 from http.server import HTTPServer, SimpleHTTPRequestHandler, test as test_orig import sys def test(*args): test_orig(*args, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000) except ImportError: # Python 2 from BaseHTTPServer import HTTPServer, test from SimpleHTTPServer import SimpleHTTPRequestHandler class CORSRequestHandler(SimpleHTTPRequestHandler): def end_headers(self): self.send_header('Access-Control-Allow-Origin', 'http://0.0.0.0:8601') SimpleHTTPRequestHandler.end_headers(self) if __name__ == '__main__': test(CORSRequestHandler, HTTPServer)
except IOError: self.send_error(404, "File not found") return None self.send_response(200) self.send_header("Content-type", 'text/html') fs = os.fstat(f.fileno()) self.send_header("Content-Length", str(fs[6])) self.send_header("Last-Modified", self.date_time_string(fs.st_mtime)) self.end_headers() return f def copyfile(self, source, outputfile): """Copy all data between two file objects. The SOURCE argument is a file object open for reading (or anything with a read() method) and the DESTINATION argument is a file object open for writing (or anything with a write() method). The only reason for overriding this would be to change the block size or perhaps to replace newlines by CRLF -- note however that this the default server uses this to copy binary data as well. """ shutil.copyfileobj(source, outputfile) if __name__ == '__main__': test(RequestHandler, HTTPServer)
#!/usr/bin/env python from BaseHTTPServer import HTTPServer, test from SimpleHTTPServer import SimpleHTTPRequestHandler SimpleHTTPRequestHandler.extensions_map['.less'] = 'text/css' SimpleHTTPRequestHandler.extensions_map['.ks'] = 'text/javascript' test(SimpleHTTPRequestHandler, HTTPServer)
#!/usr/bin/env python try: # Python 3 from http.server import HTTPServer, SimpleHTTPRequestHandler, test as test_orig import sys def test (*args): test_orig(*args, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000) except ImportError: # Python 2 from BaseHTTPServer import HTTPServer, test from SimpleHTTPServer import SimpleHTTPRequestHandler class CORSRequestHandler (SimpleHTTPRequestHandler): def end_headers (self): self.send_header('Access-Control-Allow-Origin', '*') SimpleHTTPRequestHandler.end_headers(self) if __name__ == '__main__': test(CORSRequestHandler, HTTPServer)
#!/usr/bin/env python from BaseHTTPServer import HTTPServer, test from SimpleHTTPServer import SimpleHTTPRequestHandler class CORSRequestHandler(SimpleHTTPRequestHandler): def end_headers(self): self.send_header('Access-Control-Allow-Origin', '*') SimpleHTTPRequestHandler.end_headers(self) if __name__ == '__main__': test(CORSRequestHandler)
def HTTPLoop(HandlerClass=HTTPHandler, ServerClass=ThreadedHTTPServer): test(HandlerClass, ServerClass)
def serve(): test(CORSRequestHandler, HTTPServer)
#!/usr/bin/env python try: # python 2 from BaseHTTPServer import HTTPServer, test from CGIHTTPServer import CGIHTTPRequestHandler except ImportError: # python 3 from http.server import HTTPServer, CGIHTTPRequestHandler, test class myCGIHTTPRequestHandler(CGIHTTPRequestHandler): def send_head(self): # rewrite URLs: /abs/[bibcode] => script in /cgi-bin if self.path.startswith('/abs/'): self.path = '/cgi-bin/nph-data_query?link_type=ABSTRACT&bibcode=' + self.path[5:] return CGIHTTPRequestHandler.send_head(self) if __name__ == '__main__': test(myCGIHTTPRequestHandler, HTTPServer)
# self.send_error(305, 'Use Proxy') # self.send_error(307, 'Temporary Redirect') # self.send_error(400, 'Bad Request') # self.send_error(401, 'Unauthorized') # self.send_error(402, 'Payment Required') # self.send_error(403, 'Forbidden') self.send_error(404, 'Not Found') # self.send_error(405, 'Method Not Allowed') # self.send_error(406, 'Not Acceptable') # self.send_error(407, 'Proxy Authentication Required') # self.send_error(408, 'Request Timeout') # self.send_error(409, 'Conflict') # self.send_error(410, 'Gone') # self.send_error(411, 'Length Required') # self.send_error(412, 'Precondition Failed') # self.send_error(413, 'Request Entity Too Large') # self.send_error(414, 'Request-URI Too Long') # self.send_error(415, 'Unsupported Media Type') # self.send_error(416, 'Requested Range Not Satisfiable') # self.send_error(417, 'Expectation Failed') # self.send_error(500, 'Internal Server Error') # self.send_error(501, 'Not Implemented') # self.send_error(502, 'Bad Gateway') # self.send_error(503, 'Service Unavailable') # self.send_error(504, 'Gateway Timeout') # self.send_error(505, 'HTTP Version Not Supported') if __name__ == '__main__': test(TestRequestHandler, HTTPServer)