diff --git a/intercom/client.py b/intercom/client.py index ce37617b..e695551e 100644 --- a/intercom/client.py +++ b/intercom/client.py @@ -5,11 +5,12 @@ class Client(object): - def __init__(self, personal_access_token='my_personal_access_token'): + def __init__(self, personal_access_token='my_personal_access_token', timeout=90): self.personal_access_token = personal_access_token self.base_url = 'https://api.intercom.io' self.rate_limit_details = {} self.http_session = requests.Session() + self.timeout = timeout @property def _auth(self): @@ -87,20 +88,20 @@ def _execute_request(self, request, params): def get(self, path, params): from intercom import request - req = request.Request('GET', path, self.http_session) + req = request.Request('GET', path, self.http_session, timeout=self.timeout) return self._execute_request(req, params) def post(self, path, params): from intercom import request - req = request.Request('POST', path, self.http_session) + req = request.Request('POST', path, self.http_session, timeout=self.timeout) return self._execute_request(req, params) def put(self, path, params): from intercom import request - req = request.Request('PUT', path, self.http_session) + req = request.Request('PUT', path, self.http_session, timeout=self.timeout) return self._execute_request(req, params) def delete(self, path, params): from intercom import request - req = request.Request('DELETE', path, self.http_session) + req = request.Request('DELETE', path, self.http_session, timeout=self.timeout) return self._execute_request(req, params) diff --git a/intercom/request.py b/intercom/request.py index 820f8599..59f6dc25 100644 --- a/intercom/request.py +++ b/intercom/request.py @@ -13,24 +13,13 @@ logger = logging.getLogger('intercom.request') -def configure_timeout(): - """Configure the request timeout.""" - timeout = os.getenv('INTERCOM_REQUEST_TIMEOUT', '90') - try: - return int(timeout) - except ValueError: - logger.warning('%s is not a valid timeout value.', timeout) - return 90 - - class Request(object): - timeout = configure_timeout() - - def __init__(self, http_method, path, http_session=None): + def __init__(self, http_method, path, http_session=None, timeout=90): self.http_method = http_method self.path = path self.http_session = http_session + self.timeout = timeout def execute(self, base_url, auth, params): return self.send_request_to_path(base_url, auth, params) diff --git a/tests/unit/test_request.py b/tests/unit/test_request.py index fdfa7794..89789153 100644 --- a/tests/unit/test_request.py +++ b/tests/unit/test_request.py @@ -332,25 +332,7 @@ def it_needs_encoding_or_apparent_encoding(self): @istest def it_allows_the_timeout_to_be_changed(self): from intercom.request import Request - try: - eq_(90, Request.timeout) - Request.timeout = 3 - eq_(3, Request.timeout) - finally: - Request.timeout = 90 - - @istest - def it_allows_the_timeout_to_be_configured(self): - import os - from intercom.request import configure_timeout - - # check the default - eq_(90, configure_timeout()) - - # override the default - os.environ['INTERCOM_REQUEST_TIMEOUT'] = '20' - eq_(20, configure_timeout()) - - # ignore bad timeouts, reset to default 90 - os.environ['INTERCOM_REQUEST_TIMEOUT'] = 'abc' - eq_(90, configure_timeout()) + request = Request('GET', '/') + eq_(90, request.timeout) + request = Request('GET', '/', timeout=3) + eq_(3, request.timeout)