def execute(self, api, **arguments): # type: (Iota, ...) -> int debug_requests = arguments['debug_requests'] pow_uri = arguments['pow_uri'] # If ``pow_uri`` is specified, route POW requests to a separate # node. if pow_uri: pow_adapter = resolve_adapter(pow_uri) api.adapter = RoutingWrapper(api.adapter) api.adapter.add_route('attachToTangle', pow_adapter) api.adapter.add_route('interruptAttachingToTangle', pow_adapter) # If ``debug_requests`` is specified, log HTTP requests/responses. if debug_requests: # Inject a logger into the IOTA HTTP adapter. basicConfig(level=DEBUG, stream=stderr) logger = getLogger(__name__) logger.setLevel(DEBUG) api.adapter.set_logger(logger) # Turn on debugging for the underlying HTTP library. http_client.HTTPConnection.debuglevel = 1 try: self._start_repl(api) except KeyboardInterrupt: pass return 0
def __init__(self, adapter): # type: (AdapterSpec) -> None super(BaseWrapper, self).__init__() if not isinstance(adapter, BaseAdapter): adapter = resolve_adapter(adapter) self.adapter = adapter # type: BaseAdapter
def __init__(self, adapter, testnet=False): # type: (AdapterSpec, bool) -> None """ :param adapter: URI string or BaseAdapter instance. :param testnet: Whether to use testnet settings for this instance. """ super(StrictIota, self).__init__() if not isinstance(adapter, BaseAdapter): adapter = resolve_adapter(adapter) self.adapter = adapter # type: BaseAdapter self.testnet = testnet
def add_route(self, command, adapter): # type: (Text, AdapterSpec) -> RoutingWrapper """ Adds a route to the wrapper. :param command: The name of the command to route (e.g., "attachToTangle"). :param adapter: The adapter object or URI to route requests to. """ if not isinstance(adapter, BaseAdapter): try: adapter = self.adapter_aliases[adapter] except KeyError: self.adapter_aliases[adapter] = adapter = resolve_adapter( adapter ) self.routes[command] = adapter return self
def test_unknown_protocol(self): """ The URI references a protocol that has no associated adapter. """ with self.assertRaises(InvalidUri): resolve_adapter('foobar://localhost:14265')
def test_missing_protocol(self): """ The URI does not include a protocol. """ with self.assertRaises(InvalidUri): resolve_adapter('localhost:14265')
def test_https(self): """ Resolving a valid ``https://`` URI. """ adapter = resolve_adapter('https://localhost:14265/') self.assertIsInstance(adapter, HttpAdapter)
def test_adapter_instance(self): """ Resolving an adapter instance. """ adapter = MockAdapter() self.assertIs(resolve_adapter(adapter), adapter)