diff --git a/intuitlib/client.py b/intuitlib/client.py index 739a8d2..91c29d7 100644 --- a/intuitlib/client.py +++ b/intuitlib/client.py @@ -55,7 +55,7 @@ def __init__(self, client_id, client_secret, redirect_uri, environment, state_to self.state_token = state_token # Discovery doc contains endpoints based on environment specified - discovery_doc = get_discovery_doc(self.environment, session=self) + discovery_doc = get_discovery_doc(self.environment) self.auth_endpoint = discovery_doc['authorization_endpoint'] self.token_endpoint = discovery_doc['token_endpoint'] self.revoke_endpoint = discovery_doc['revocation_endpoint'] diff --git a/intuitlib/utils.py b/intuitlib/utils.py index c1fd832..efc0633 100644 --- a/intuitlib/utils.py +++ b/intuitlib/utils.py @@ -23,6 +23,7 @@ import string from base64 import b64encode, b64decode from datetime import datetime +from functools import lru_cache from requests.sessions import Session from intuitlib.config import DISCOVERY_URL, ACCEPT_HEADER @@ -30,10 +31,10 @@ from intuitlib.exceptions import AuthClientError -def get_discovery_doc(environment, session=None): +@lru_cache() +def get_discovery_doc(environment): """Gets discovery doc based on environment specified. :param environment: App environment, accepted values: 'sandbox','production','prod','e2e' - :param session: `requests.Session` object if a session is already being used, defaults to None :return: Discovery doc response :raises HTTPError: if response status != 200 """ @@ -44,10 +45,7 @@ def get_discovery_doc(environment, session=None): else: discovery_url = environment - if session is not None and isinstance(session, Session): - response = session.get(url=discovery_url) - else: - response = requests.get(url=discovery_url) + response = requests.get(url=discovery_url) if response.status_code != 200: raise AuthClientError(response) return response.json() diff --git a/tests/test_utils.py b/tests/test_utils.py index 9cf2059..08dfb19 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -60,6 +60,7 @@ def test_get_discovery_doc_custom_url_input(self): @mock.patch('intuitlib.utils.requests.get') def test_get_discovery_doc_bad_response(self, mock_get): + get_discovery_doc.cache_clear() mock_resp = self.mock_request(status=400) mock_get.return_value = mock_resp