diff --git a/openapi_spec_validator/handlers/base.py b/openapi_spec_validator/handlers/base.py index 0c58400..c6819a8 100644 --- a/openapi_spec_validator/handlers/base.py +++ b/openapi_spec_validator/handlers/base.py @@ -1,13 +1,8 @@ """OpenAPI spec validator handlers file module.""" -from openapi_spec_validator.loaders import ExtendedSafeLoader class BaseHandler(object): """OpenAPI spec validator base handler.""" - def __init__(self, **options): - self.options = options - - @property - def loader(self): - return self.options.get('loader', ExtendedSafeLoader) + def __call__(self, f): + raise NotImplementedError diff --git a/openapi_spec_validator/handlers/file.py b/openapi_spec_validator/handlers/file.py index 5db8201..e4ac103 100644 --- a/openapi_spec_validator/handlers/file.py +++ b/openapi_spec_validator/handlers/file.py @@ -3,11 +3,15 @@ from yaml import load from openapi_spec_validator.handlers.base import BaseHandler +from openapi_spec_validator.loaders import ExtendedSafeLoader class FileObjectHandler(BaseHandler): """OpenAPI spec validator file-like object handler.""" + def __init__(self, loader=ExtendedSafeLoader): + self.loader = loader + def __call__(self, f): return load(f, self.loader) diff --git a/openapi_spec_validator/handlers/requests.py b/openapi_spec_validator/handlers/requests.py index 98d5234..e998dfe 100644 --- a/openapi_spec_validator/handlers/requests.py +++ b/openapi_spec_validator/handlers/requests.py @@ -13,17 +13,18 @@ class UrlRequestsHandler(FileHandler): """OpenAPI spec validator URL (requests) scheme handler.""" def __init__(self, *allowed_schemes, **options): + self.timeout = options.pop('timeout', 10) super(UrlRequestsHandler, self).__init__(**options) self.allowed_schemes = allowed_schemes - def __call__(self, url, timeout=1): + def __call__(self, url): scheme = urlparse(url).scheme assert scheme in self.allowed_schemes if scheme == "file": return super(UrlRequestsHandler, self).__call__(url) - response = requests.get(url, timeout=timeout) + response = requests.get(url, timeout=self.timeout) response.raise_for_status() data = StringIO(response.text) diff --git a/openapi_spec_validator/handlers/urllib.py b/openapi_spec_validator/handlers/urllib.py index d85b0c5..39544a2 100644 --- a/openapi_spec_validator/handlers/urllib.py +++ b/openapi_spec_validator/handlers/urllib.py @@ -11,13 +11,14 @@ class UrllibHandler(FileObjectHandler): """OpenAPI spec validator URL (urllib) scheme handler.""" def __init__(self, *allowed_schemes, **options): + self.timeout = options.pop('timeout', 10) super(UrllibHandler, self).__init__(**options) self.allowed_schemes = allowed_schemes - def __call__(self, url, timeout=1): + def __call__(self, url): assert urlparse(url).scheme in self.allowed_schemes - f = urlopen(url, timeout=timeout) + f = urlopen(url, timeout=self.timeout) with contextlib.closing(f) as fh: return super(UrllibHandler, self).__call__(fh)