class HTTPProvider(JSONBaseProvider): logger = logging.getLogger("web3.providers.HTTPProvider") endpoint_uri = None _request_args = None _request_kwargs = None # type ignored b/c conflict with _middlewares attr on BaseProvider _middlewares: Tuple[Middleware, ...] = NamedElementOnion([ (http_retry_request_middleware, 'http_retry_request') ]) # type: ignore # noqa: E501 def __init__(self, endpoint_uri: Optional[Union[URI, str]] = None, request_kwargs: Optional[Any] = None, session: Optional[Any] = None) -> None: if endpoint_uri is None: self.endpoint_uri = get_default_endpoint() else: self.endpoint_uri = URI(endpoint_uri) self._request_kwargs = request_kwargs or {} if session: cache_session(self.endpoint_uri, session) super().__init__() def __str__(self) -> str: return "RPC connection {0}".format(self.endpoint_uri) @to_dict def get_request_kwargs(self) -> Iterable[Tuple[str, Any]]: if 'headers' not in self._request_kwargs: yield 'headers', self.get_request_headers() for key, value in self._request_kwargs.items(): yield key, value def get_request_headers(self) -> Dict[str, str]: return { 'Content-Type': 'application/json', 'User-Agent': construct_user_agent(str(type(self))), } def make_request(self, method: RPCEndpoint, params: Any) -> RPCResponse: self.logger.debug("Making request HTTP. URI: %s, Method: %s", self.endpoint_uri, method) request_data = self.encode_rpc_request(method, params) raw_response = make_post_request(self.endpoint_uri, request_data, **self.get_request_kwargs()) response = self.decode_rpc_response(raw_response) self.logger.debug( "Getting response HTTP. URI: %s, " "Method: %s, Response: %s", self.endpoint_uri, method, response) return response
def __init__(self, web3, providers, middlewares=None): self.web3 = web3 self.pending_requests = {} if middlewares is None: middlewares = self.default_middlewares(web3) self.middleware_stack = NamedElementOnion(middlewares) if providers is empty: self.providers = AutoProvider() else: self.providers = providers
def __init__(self, web3: 'Web3', provider: BaseProvider = None, middlewares: Sequence[Tuple[Middleware, str]] = None) -> None: self.web3 = web3 self.pending_requests: Dict[UUID, ThreadWithReturn[RPCResponse]] = {} if middlewares is None: middlewares = self.default_middlewares(web3) self.middleware_onion: MiddlewareOnion = NamedElementOnion(middlewares) if provider is None: self.provider = AutoProvider() else: self.provider = provider
class HTTPProvider(JSONBaseProvider): logger = logging.getLogger("web3.providers.HTTPProvider") endpoint_uri = None _request_args = None _request_kwargs = None _middlewares = NamedElementOnion([(http_retry_request_middleware, 'http_retry_request')]) def __init__(self, endpoint_uri=None, request_kwargs=None): if endpoint_uri is None: self.endpoint_uri = get_default_endpoint() else: self.endpoint_uri = endpoint_uri self._request_kwargs = request_kwargs or {} super().__init__() def __str__(self): return "RPC connection {0}".format(self.endpoint_uri) @to_dict def get_request_kwargs(self): if 'headers' not in self._request_kwargs: yield 'headers', self.get_request_headers() for key, value in self._request_kwargs.items(): yield key, value def get_request_headers(self): return { 'Content-Type': 'application/json', 'User-Agent': construct_user_agent(str(type(self))), } def make_request(self, method, params): self.logger.debug("Making request HTTP. URI: %s, Method: %s", self.endpoint_uri, method) request_data = self.encode_rpc_request(method, params) raw_response = make_post_request( self.endpoint_uri, request_data, **self.get_request_kwargs() ) response = self.decode_rpc_response(raw_response) self.logger.debug("Getting response HTTP. URI: %s, " "Method: %s, Response: %s", self.endpoint_uri, method, response) return response