diff --git a/docs/adapters.rst b/docs/adapters.rst index 7551d729..be52b471 100644 --- a/docs/adapters.rst +++ b/docs/adapters.rst @@ -44,6 +44,13 @@ HttpAdapter api = Iota('https://service.iotasupport.com:14265') api = Iota(HttpAdapter('https://service.iotasupport.com:14265')) + # Use HTTPS with basic authentication and 60 seconds timeout: + api = Iota( + HttpAdapter( + 'https://service.iotasupport.com:14265', + authentication=('myusername', 'mypassword'), + timeout=60)) + ``HttpAdapter`` uses the HTTP protocol to send requests to the node. To configure an ``Iota`` instance to use ``HttpAdapter``, specify an diff --git a/iota/adapter/__init__.py b/iota/adapter/__init__.py index 0559e1b2..63f8e2ea 100644 --- a/iota/adapter/__init__.py +++ b/iota/adapter/__init__.py @@ -10,7 +10,7 @@ from socket import getdefaulttimeout as get_default_timeout from typing import Container, Dict, List, Optional, Text, Tuple, Union -from requests import Response, codes, request +from requests import Response, codes, request, auth from six import PY2, binary_type, iteritems, moves as compat, text_type, \ with_metaclass @@ -223,11 +223,12 @@ class HttpAdapter(BaseAdapter): in the ``headers`` kwarg. """ - def __init__(self, uri, timeout=None): + def __init__(self, uri, timeout=None, authentication=None): # type: (Union[Text, SplitResult], Optional[int]) -> None super(HttpAdapter, self).__init__() self.timeout = timeout + self.authentication = authentication if isinstance(uri, text_type): uri = compat.urllib_parse.urlsplit(uri) # type: SplitResult @@ -313,6 +314,8 @@ def _send_http_request(self, url, payload, method='post', **kwargs): default_timeout = self.timeout if self.timeout else get_default_timeout() kwargs.setdefault('timeout', default_timeout) + if self.authentication: + kwargs.setdefault('auth', auth.HTTPBasicAuth(*self.authentication)) self._log( level = DEBUG,