32 lines
998 B
Python
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
|