Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions epo_ops/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
from . import exceptions
from .middlewares import Throttler
from .models import (
NETWORK_TIMEOUT,
AccessToken,
Docdb,
Epodoc,
Expand All @@ -21,6 +20,7 @@

log = logging.getLogger(__name__)

DEFAULT_NETWORK_TIMEOUT = 10.0

class Client(object):
__auth_url__ = "https://ops.epo.org/3.2/auth/accesstoken"
Expand All @@ -35,14 +35,15 @@ class Client(object):
__register_path__ = "register"
__register_search_path__ = "register/search"

def __init__(self, key, secret, accept_type="xml", middlewares=None):
def __init__(self, key, secret, accept_type="xml", middlewares=None, timeout=DEFAULT_NETWORK_TIMEOUT):
self.accept_type = "application/{0}".format(accept_type)
self.middlewares = middlewares
if middlewares is None:
self.middlewares = [Throttler()]
self.request = Request(self.middlewares)
self.request = Request(self.middlewares, timeout)
self.key = key
self.secret = secret
self.timeout = timeout
self._access_token = None

def family(
Expand Down Expand Up @@ -351,7 +352,7 @@ def _acquire_token(self):
self.__auth_url__,
headers=headers,
data=payload,
timeout=NETWORK_TIMEOUT,
timeout=self.timeout,
)
response.raise_for_status()
self._access_token = AccessToken(response)
Expand Down
20 changes: 8 additions & 12 deletions epo_ops/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,6 @@

log = logging.getLogger(__name__)


NETWORK_TIMEOUT = 10.0


def _prepare_part(part):
return "({0})".format(quote(part))

Expand Down Expand Up @@ -68,8 +64,9 @@ def is_expired(self):


class Request(object):
def __init__(self, middlewares):
def __init__(self, middlewares, timeout=None):
self.middlewares = middlewares
self.timeout = timeout
self.reset_env()

@property
Expand All @@ -86,10 +83,10 @@ def reset_env(self):
self.env.update(self.default_env)

def post(self, url, data=None, **kwargs):
return self._request(_post_callback, url, data, **kwargs)
return self._request(self._post_callback, url, data, **kwargs)

def get(self, url, data=None, **kwargs):
return self._request(_get_callback, url, data, **kwargs)
return self._request(self._get_callback, url, data, **kwargs)

def _request(self, callback, url, data=None, **kwargs):
self.reset_env()
Expand All @@ -111,9 +108,8 @@ def _request(self, callback, url, data=None, **kwargs):
return response


def _post_callback(url, data, **kwargs):
return requests.post(url, data, **kwargs, timeout=NETWORK_TIMEOUT)

def _post_callback(self, url, data, **kwargs):
return requests.post(url, data, **kwargs, timeout=self.timeout)

def _get_callback(url, data, **kwargs):
return requests.get(url, **kwargs, timeout=NETWORK_TIMEOUT)
def _get_callback(self, url, data, **kwargs):
return requests.get(url, **kwargs, timeout=self.timeout)