12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #!/usr/bin/env python3
- #
- # MMGen Wallet, a terminal-based cryptocurrency wallet
- # Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
- # Licensed under the GNU General Public License, Version 3:
- # https://www.gnu.org/licenses
- # Public project repositories:
- # https://github.com/mmgen/mmgen-wallet
- # https://gitlab.com/mmgen/mmgen-wallet
- """
- 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]
|