funga/src/web3ext/__init__.py

32 lines
998 B
Python

import re
from web3 import Web3 as Web3super
from web3 import WebsocketProvider, HTTPProvider
from web3ext.middleware import PlatformMiddleware
re_websocket = re.compile('^wss?://')
re_http = re.compile('^https?://')
#def create_middleware(ipcaddr='/var/run/cic-platform/cic.ipc'):
def create_middleware(ipcaddr='/tmp/foo.ipc'):
PlatformMiddleware.ipcaddr = ipcaddr
return PlatformMiddleware
# overrides the original Web3 constructor
def Web3(blockchain_providers=[], ipcaddr=None):
if len(blockchain_providers) > 1:
raise ValueError('backend only supports single provider')
provider = None
if re.match(re_websocket, blockchain_providers[0]) != None:
provider = WebsocketProvider(blockchain_providers[0])
elif re.match(re_http, blockchain_providers[0]) != None:
provider = HTTPProvider(blockchain_providers[0])
w3 = Web3super(provider)
w3.middleware_onion.add(create_middleware())
w3.eth.personal = w3.geth.personal
return w3