etherscan.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/env python3
  2. #
  3. # MMGen Wallet, a terminal-based cryptocurrency wallet
  4. # Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
  5. # Licensed under the GNU General Public License, Version 3:
  6. # https://www.gnu.org/licenses
  7. # Public project repositories:
  8. # https://github.com/mmgen/mmgen-wallet
  9. # https://gitlab.com/mmgen/mmgen-wallet
  10. """
  11. test.cmdtest_d.httpd.etherscan: Etherscan WSGI http server
  12. """
  13. from . import HTTPD
  14. class EtherscanServer(HTTPD):
  15. name = 'etherscan server'
  16. port = 28800
  17. content_type = 'text/html'
  18. def make_response_body(self, method, environ):
  19. if method == 'GET':
  20. target = 'form'
  21. elif method == 'POST':
  22. target = 'result'
  23. length = int(environ.get('CONTENT_LENGTH', '0'))
  24. qs = environ['wsgi.input'].read(length).decode()
  25. tx = [s for s in qs.split('&') if 'RawTx=' in s][0].split('=')[1][:10]
  26. if tx == '0xf86f0185':
  27. txid = '1c034395c9aa2217abbbf3ed4d89c5ad1aa0f0215aa11d02efeea33a5ac8331c'
  28. else:
  29. txid = 'beadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafe'
  30. with open(f'test/ref/ethereum/etherscan-{target}.html') as fh:
  31. text = fh.read()
  32. return (text if method == 'GET' else text.format(txid='0x'+txid)).encode()