From 8d8fbac99dd6da3e6cca229cd142052df9a418df Mon Sep 17 00:00:00 2001 From: Daniil Belyakov Date: Mon, 21 Aug 2017 17:40:19 +0200 Subject: [PATCH] add proxy support [#16] --- bunq/sdk/client.py | 6 +++++- bunq/sdk/context.py | 16 +++++++++++++--- requirements.txt | 2 +- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/bunq/sdk/client.py b/bunq/sdk/client.py index 1604bf2..3225fdd 100644 --- a/bunq/sdk/client.py +++ b/bunq/sdk/client.py @@ -19,6 +19,9 @@ class ApiClient(object): :type _api_context: context.ApiContext """ + # HTTPS type of proxy, the only used at bunq + _FIELD_PROXY_HTTPS = 'https' + # Header constants HEADER_ATTACHMENT_DESCRIPTION = 'X-Bunq-Attachment-Description' HEADER_CONTENT_TYPE = 'Content-Type' @@ -98,7 +101,8 @@ def _request(self, method, uri_relative, request_bytes, custom_headers): method, self._get_uri_full(uri_relative), data=request_bytes, - headers=all_headers + headers=all_headers, + proxies={self._FIELD_PROXY_HTTPS: self._api_context.proxy_url} ) self._assert_response_success(response) diff --git a/bunq/sdk/context.py b/bunq/sdk/context.py index f2778dd..c4efdb6 100644 --- a/bunq/sdk/context.py +++ b/bunq/sdk/context.py @@ -41,6 +41,7 @@ class ApiContext(object): :type _api_key: str :type _session_context: SessionContext :type _installation_context: InstallationContext + :type _proxy_url: str|None """ # File mode for saving and restoring the context @@ -57,21 +58,22 @@ class ApiContext(object): _PATH_API_CONTEXT_DEFAULT = 'bunq.conf' def __init__(self, environment_type, api_key, device_description, - permitted_ips=None): + permitted_ips=None, proxy_url=None): """ :type environment_type: ApiEnvironmentType :type api_key: str :type device_description: str :type permitted_ips: list[str]|None + :type proxy_url: str|None """ - if permitted_ips is None: - permitted_ips = [] + permitted_ips = permitted_ips or [] self._environment_type = environment_type self._api_key = api_key self._installation_context = None self._session_context = None + self._proxy_url = proxy_url self._initialize(device_description, permitted_ips) def _initialize(self, device_description, permitted_ips): @@ -254,6 +256,14 @@ def session_context(self): return self._session_context + @property + def proxy_url(self): + """ + :rtype: str + """ + + return self._proxy_url + def save(self, path=None): """ :type path: str diff --git a/requirements.txt b/requirements.txt index 11d2e0b..faa2ad6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ aenum==2.0.8 chardet==3.0.4 pycryptodomex==3.4.6 -requests==2.18.1 +requests[socks]==2.18.1 simplejson==3.11.1 urllib3==1.21.1