From a68ec148118332fbbfb112afbcecd002adb9de11 Mon Sep 17 00:00:00 2001 From: Kevin Hellemun Date: Thu, 12 Oct 2017 22:21:49 +0200 Subject: [PATCH 1/3] Added isSessionExpired() method #31. --- bunq/sdk/context.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/bunq/sdk/context.py b/bunq/sdk/context.py index e7ce859..4bda355 100644 --- a/bunq/sdk/context.py +++ b/bunq/sdk/context.py @@ -166,8 +166,17 @@ def _get_session_timeout_seconds(cls, session_server): return session_server.user_person.session_timeout def ensure_session_active(self): + if self.is_session_expired() and self.session_context is not None: + self.reset_session() + + def is_session_expired(self): + """ + :return: True if it has expired, otherwise false + :rtype: bool + """ + if self.session_context is None: - return + return False time_now = datetime.datetime.now() time_to_expiry = self.session_context.expiry_time - time_now @@ -175,8 +184,7 @@ def ensure_session_active(self): seconds=self._TIME_TO_SESSION_EXPIRY_MINIMUM_SECONDS ) - if time_to_expiry < time_to_expiry_minimum: - self.reset_session() + return time_to_expiry < time_to_expiry_minimum def reset_session(self): """ From f5057170c2ad78f1a0090c830e4ad8a20f54cf03 Mon Sep 17 00:00:00 2001 From: Kevin Hellemun Date: Thu, 19 Oct 2017 20:23:50 +0200 Subject: [PATCH 2/3] Reflected PHP review changes. --- bunq/sdk/client.py | 13 ++++++++++++- bunq/sdk/context.py | 10 +++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/bunq/sdk/client.py b/bunq/sdk/client.py index e84e210..0b733e8 100644 --- a/bunq/sdk/client.py +++ b/bunq/sdk/client.py @@ -15,6 +15,16 @@ class ApiClient(object): :type _api_context: bunq.sdk.context.ApiContext """ + # Endpoints not requiring active session for the request to succeed. + _URL_DEVICE_SERVER = 'device-server' + _URI_INSTALLATION = 'installation' + _URI_SESSION_SERVER = 'session-server' + _URIS_NOT_REQUIRING_ACTIVE_SESSION = [ + _URI_INSTALLATION, + _URI_SESSION_SERVER, + _URL_DEVICE_SERVER, + ] + # HTTPS type of proxy, the only used at bunq _FIELD_PROXY_HTTPS = 'https' @@ -93,7 +103,8 @@ def _request(self, method, uri_relative, request_bytes, params, uri_relative_with_params = self._append_params_to_uri(uri_relative, params) - self._api_context.ensure_session_active() + if uri_relative not in self._URIS_NOT_REQUIRING_ACTIVE_SESSION: + self._api_context.ensure_session_active() all_headers = self._get_all_headers( method, uri_relative_with_params, diff --git a/bunq/sdk/context.py b/bunq/sdk/context.py index 4bda355..1ea2a49 100644 --- a/bunq/sdk/context.py +++ b/bunq/sdk/context.py @@ -166,10 +166,14 @@ def _get_session_timeout_seconds(cls, session_server): return session_server.user_person.session_timeout def ensure_session_active(self): - if self.is_session_expired() and self.session_context is not None: + """ + Resets the session if it has expired. + """ + + if not self.is_session_active(): self.reset_session() - def is_session_expired(self): + def is_session_active(self): """ :return: True if it has expired, otherwise false :rtype: bool @@ -184,7 +188,7 @@ def is_session_expired(self): seconds=self._TIME_TO_SESSION_EXPIRY_MINIMUM_SECONDS ) - return time_to_expiry < time_to_expiry_minimum + return time_to_expiry > time_to_expiry_minimum def reset_session(self): """ From ffea2c46cb8e90ff2878694b8e961e8b55acc095 Mon Sep 17 00:00:00 2001 From: Kevin Hellemun Date: Tue, 24 Oct 2017 14:38:08 +0200 Subject: [PATCH 3/3] Some cleaning :fire: --- bunq/sdk/client.py | 1 + bunq/sdk/context.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bunq/sdk/client.py b/bunq/sdk/client.py index 0b733e8..8e0d5c8 100644 --- a/bunq/sdk/client.py +++ b/bunq/sdk/client.py @@ -105,6 +105,7 @@ def _request(self, method, uri_relative, request_bytes, params, params) if uri_relative not in self._URIS_NOT_REQUIRING_ACTIVE_SESSION: self._api_context.ensure_session_active() + all_headers = self._get_all_headers( method, uri_relative_with_params, diff --git a/bunq/sdk/context.py b/bunq/sdk/context.py index 1ea2a49..c96ee50 100644 --- a/bunq/sdk/context.py +++ b/bunq/sdk/context.py @@ -175,7 +175,6 @@ def ensure_session_active(self): def is_session_active(self): """ - :return: True if it has expired, otherwise false :rtype: bool """