12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- """
- test.cmdtest_d.httpd: WSGI http server
- """
- from wsgiref.simple_server import make_server, WSGIRequestHandler
- from mmgen.util import msg
- from mmgen.util2 import port_in_use
- class SilentRequestHandler(WSGIRequestHandler):
- def log_request(self, code='-', size='-'):
- return None
- class HTTPD:
- def start(self):
- if port_in_use(self.port):
- msg(f'\nPort {self.port} in use. Assuming {self.name} is running')
- return True
- self.httpd = make_server(
- 'localhost',
- self.port,
- self.application,
- handler_class = SilentRequestHandler)
- import threading
- t = threading.Thread(target=self.httpd.serve_forever, name=f'{self.name} thread')
- t.daemon = True
- t.start()
- def stop(self):
- self.httpd.server_close()
- def application(self, environ, start_response):
- method = environ['REQUEST_METHOD']
- response_body = self.make_response_body(method, environ)
- status = '200 OK'
- response_headers = [
- ('Content-Type', self.content_type),
- ('Content-Length', str(len(response_body)))
- ]
- start_response(status, response_headers)
- return [response_body]
|