#!/usr/bin/env python3 # # MMGen Wallet, a terminal-based cryptocurrency wallet # Copyright (C)2013-2025 The MMGen Project # 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.etherscan: Etherscan WSGI http server """ from . import HTTPD class EtherscanServer(HTTPD): name = 'etherscan server' port = 28800 content_type = 'text/html' def make_response_body(self, method, environ): if method == 'GET': target = 'form' elif method == 'POST': target = 'result' length = int(environ.get('CONTENT_LENGTH', '0')) qs = environ['wsgi.input'].read(length).decode() tx = [s for s in qs.split('&') if 'RawTx=' in s][0].split('=')[1][:10] if tx == '0xf86f0185': txid = '1c034395c9aa2217abbbf3ed4d89c5ad1aa0f0215aa11d02efeea33a5ac8331c' else: txid = 'beadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafe' with open(f'test/ref/ethereum/etherscan-{target}.html') as fh: text = fh.read() return (text if method == 'GET' else text.format(txid='0x'+txid)).encode()