From 42b4ad8c337b8cda212762f81893d0e961b11a1c Mon Sep 17 00:00:00 2001 From: larsyngvelundin <34173819+larsyngvelundin@users.noreply.github.com> Date: Mon, 30 Oct 2023 12:32:02 +0100 Subject: [PATCH] clean up --- dist/web3_balancer-0.1-py3-none-any.whl | Bin 15325 -> 0 bytes dist/web3_balancer-0.1.tar.gz | Bin 15263 -> 0 bytes main.py | 147 ------------------------ setup.py | 23 ++-- src/__init__.py | 0 web3_balancer/__init__.py | 1 + {src => web3_balancer}/main.py | 11 +- 7 files changed, 22 insertions(+), 160 deletions(-) delete mode 100644 dist/web3_balancer-0.1-py3-none-any.whl delete mode 100644 dist/web3_balancer-0.1.tar.gz delete mode 100644 main.py delete mode 100644 src/__init__.py create mode 100644 web3_balancer/__init__.py rename {src => web3_balancer}/main.py (96%) diff --git a/dist/web3_balancer-0.1-py3-none-any.whl b/dist/web3_balancer-0.1-py3-none-any.whl deleted file mode 100644 index 3a9873443a5a78c9a2473e543a9f9fe52fc5ce5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15325 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 diff --git a/dist/web3_balancer-0.1.tar.gz b/dist/web3_balancer-0.1.tar.gz deleted file mode 100644 index 8f0364eaa710a9868adb25c6b4912835a3642a9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15263 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 A{Qv*} diff --git a/main.py b/main.py deleted file mode 100644 index febbb25..0000000 --- a/main.py +++ /dev/null @@ -1,147 +0,0 @@ -from time import sleep -import requests - -from web3 import Web3 -from web3.providers.rpc import HTTPProvider -import web3 -from web3.middleware import geth_poa_middleware -from loguru import logger - - -class Balancer(): - def __init__(self, rpc_list, tor=False, is_contract=False, w3=None, set_net=""): - self.error_count = 0 - self.curr_func = "" - self.is_contract = is_contract - self.net = set_net - self._active_net = set_net - self.rpc_list = rpc_list - self.balancer = {} - for network in self.rpc_list: - self.balancer[network] = 0 - self.tor = tor - self._w3 = w3 - - def get_w3(self, network): - self._active_net = network - self.balancer[network] += 1 - self.balancer[network] = self.balancer[network] % len( - self.rpc_list[network]['links']) - - if (self.tor): - session = get_tor_session() - w3 = Web3(Web3.HTTPProvider( - self.rpc_list[network]['links'][self.balancer[network]], session=session)) - else: - w3 = Web3(Web3.HTTPProvider( - self.rpc_list[network]['links'][self.balancer[network]])) - if (self.is_contract): - self.is_contract = w3.eth.contract( - address=self.is_contract.address, abi=self.is_contract.abi) - - if (network == "matic" or network == "bnb"): - w3.middleware_onion.inject(geth_poa_middleware, layer=0) - - try: - if (self.is_contract): - if (self.is_contract.w3.is_connected()): - logger.debug( - f"W3 connected to {self.rpc_list[network]['links'][self.balancer[network]]}") - self._active_net = network - return w3 - else: - logger.error( - f"Unable to connect to {self.rpc_list[network]['links'][self.balancer[network]]}") - sleep(0.5) - return self.get_w3(network) - - else: - if (w3.is_connected()): - logger.debug( - f"W3 connected to {self.rpc_list[network]['links'][self.balancer[network]]}") - self._active_net = network - else: - logger.error( - f"Unable to connect to {self.rpc_list[network]['links'][self.balancer[network]]}") - logger.debug("Attempting new connection in 0.5s") - sleep(0.5) - return self.get_w3(network) - except AssertionError as error: - logger.error( - f"Unable to connect to {self.rpc_list[network]['links'][self.balancer[network]]}") - sleep(0.5) - return self.get_w3(network) - - return w3 - - def __getattr__(self, name): - self.curr_func += "." + name - return self - - def __call__(self, *args, **kwargs): - func_call = self.curr_func[1:] - if (func_call.find("eth") == 0 and len(args) + len(kwargs) == 0): - pass - else: - arg_str = ', '.join(repr(arg) for arg in args) - kwarg_str = "" - for argument in kwargs: - if argument == "address": - kwarg_str += f",{argument} = '{kwargs[argument]}'" - else: - kwarg_str += f",{argument} = {kwargs[argument]}" - func_call = f"{func_call}({arg_str}{kwarg_str})" - self.curr_func = "" - func_call = func_call.replace("(,", "(") - return self._call_w3_func(func_call) - - def _call_w3_func(self, func): - if (self._w3 == None or self._active_net != self.net): - self._w3 = self.get_w3(self.net) - val = None - try: - if (self.is_contract): - val = eval(f"self.is_contract.{func}") - else: - val = eval(f"self._w3.{func}") - except (requests.exceptions.ConnectionError, requests.exceptions.ReadTimeout, requests.exceptions.HTTPError) as error: - self.error_count += 1 - if (self.error_count > 1): - raise Exception( - f"Failed to get a working web3 connection {self.error_count} times in a row, aborting.") - logger.error(error) - logger.debug(f"Fetching new w3 connection and trying again") - self._w3 = self.get_w3(self.net) - if (self.is_contract): - self.is_contract.w3 = self._w3 - sleep(0.2) - self._call_w3_func(func) - if str(type(val)) == "": - logger.debug("Returning a contract balancer") - contract = Balancer(self.rpc_list, tor=self.tor, - is_contract=val, set_net=self._active_net) - return contract - self.error_count = 0 - return (val) - - -url = "http://ip-api.com/json/" - - -def get_tor_session(): - session = requests.Session() - session.proxies = { - 'http': 'socks5h://localhost:9050', - 'https': 'socks5h://localhost:9050', - } - - adapter = requests.adapters.HTTPAdapter( - pool_connections=20, pool_maxsize=20) - - session.mount('http://', adapter) - session.mount('https://', adapter) - - response = session.get(url) - logger.debug(response.text) - - return session diff --git a/setup.py b/setup.py index 4870f00..f07f8c2 100644 --- a/setup.py +++ b/setup.py @@ -1,17 +1,26 @@ -from setuptools import setup - +from distutils.core import setup setup( name='web3_balancer', + packages=['web3_balancer'], version='0.1', - description='A connection balancer for web3', + license='GNU GPL-3.0 license', + description='A balancer for web3 connections', author='Lars Lundin', - author_email='lars.y.lundin@gmail.com', - url='https://github.com/larsyngvelundin/web3-balancer/', - packages=['src'], - package_dir={'': 'src'}, + author_email='your.email@domain.com', + url='https://github.com/larsyngvelundin/web3_balancer', + download_url='https://github.com/larsyngvelundin/web3_balancer/releases/v_01.tar.gz', + keywords=['web3'], install_requires=[ 'web3', 'loguru', ], + classifiers=[ + 'Development Status :: 3 - Alpha', + 'Intended Audience :: Developers', + 'Topic :: Software Development :: Build Tools', + 'License :: OSI Approved :: GNU GPL-3.0 license', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + ], ) diff --git a/src/__init__.py b/src/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/web3_balancer/__init__.py b/web3_balancer/__init__.py new file mode 100644 index 0000000..e179122 --- /dev/null +++ b/web3_balancer/__init__.py @@ -0,0 +1 @@ +from web3_balancer.main import Web3_balancer, get_tor_session diff --git a/src/main.py b/web3_balancer/main.py similarity index 96% rename from src/main.py rename to web3_balancer/main.py index febbb25..8577b79 100644 --- a/src/main.py +++ b/web3_balancer/main.py @@ -8,7 +8,7 @@ from loguru import logger -class Balancer(): +class Web3_balancer(): def __init__(self, rpc_list, tor=False, is_contract=False, w3=None, set_net=""): self.error_count = 0 self.curr_func = "" @@ -118,17 +118,16 @@ def _call_w3_func(self, func): self._call_w3_func(func) if str(type(val)) == "": logger.debug("Returning a contract balancer") - contract = Balancer(self.rpc_list, tor=self.tor, - is_contract=val, set_net=self._active_net) + contract = Web3_balancer(self.rpc_list, tor=self.tor, + is_contract=val, set_net=self._active_net) return contract self.error_count = 0 return (val) -url = "http://ip-api.com/json/" - - def get_tor_session(): + url = "http://ip-api.com/json/" + session = requests.Session() session.proxies = { 'http': 'socks5h://localhost:9050',