File tree Expand file tree Collapse file tree 7 files changed +105
-47
lines changed Expand file tree Collapse file tree 7 files changed +105
-47
lines changed Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1+ from openapi_spec_validator .handlers .file import FileObjectHandler
2+ try :
3+ from openapi_spec_validator .handlers .requests import (
4+ UrlRequestsHandler as UrlHandler ,
5+ )
6+ except ImportError :
7+ from openapi_spec_validator .handlers .urllib import (
8+ UrllibHandler as UrlHandler ,
9+ )
10+
11+ __all__ = ['FileObjectHandler' , 'UrlHandler' ]
Original file line number Diff line number Diff line change 1+ """OpenAPI spec validator handlers file module."""
2+ from openapi_spec_validator .loaders import ExtendedSafeLoader
3+
4+
5+ class BaseHandler (object ):
6+ """OpenAPI spec validator base handler."""
7+
8+ def __init__ (self , ** options ):
9+ self .options = options
10+
11+ @property
12+ def loader (self ):
13+ return self .options .get ('loader' , ExtendedSafeLoader )
Original file line number Diff line number Diff line change 1+ """OpenAPI spec validator handlers file module."""
2+ from six import StringIO
3+ from yaml import load
4+
5+ from openapi_spec_validator .handlers .base import BaseHandler
6+
7+
8+ class FileObjectHandler (BaseHandler ):
9+ """OpenAPI spec validator file-like object handler."""
10+
11+ def __call__ (self , f ):
12+ return load (f , self .loader )
13+
14+
15+ class FileHandler (FileObjectHandler ):
16+ """OpenAPI spec validator file path handler."""
17+
18+ def __call__ (self , f ):
19+ if isinstance (f , StringIO ):
20+ return super (FileHandler , self ).__call__ (f )
21+
22+ assert f .startswith ("file" )
23+
24+ filename = f [7 :]
25+ with open (filename ) as fh :
26+ return super (FileHandler , self ).__call__ (fh )
Original file line number Diff line number Diff line change 1+ """OpenAPI spec validator handlers requests module."""
2+ from __future__ import absolute_import
3+ import contextlib
4+
5+ from six import StringIO
6+ from six .moves .urllib .parse import urlparse
7+ import requests
8+
9+ from openapi_spec_validator .handlers .file import FileHandler
10+
11+
12+ class UrlRequestsHandler (FileHandler ):
13+ """OpenAPI spec validator URL (requests) scheme handler."""
14+
15+ def __init__ (self , * allowed_schemes , ** options ):
16+ super (UrlRequestsHandler , self ).__init__ (** options )
17+ self .allowed_schemes = allowed_schemes
18+
19+ def __call__ (self , url , timeout = 1 ):
20+ scheme = urlparse (url ).scheme
21+ assert scheme in self .allowed_schemes
22+
23+ if scheme == "file" :
24+ return super (UrlRequestsHandler , self ).__call__ (url )
25+
26+ response = requests .get (url , timeout = timeout )
27+ response .raise_for_status ()
28+
29+ data = StringIO (response .text )
30+ with contextlib .closing (data ) as fh :
31+ return super (UrlRequestsHandler , self ).__call__ (fh )
Original file line number Diff line number Diff line change 1+ """OpenAPI spec validator handlers requests module."""
2+ import contextlib
3+
4+ from six .moves .urllib .parse import urlparse
5+ from six .moves .urllib .request import urlopen
6+
7+ from openapi_spec_validator .handlers .file import FileObjectHandler
8+
9+
10+ class UrllibHandler (FileObjectHandler ):
11+ """OpenAPI spec validator URL (urllib) scheme handler."""
12+
13+ def __init__ (self , * allowed_schemes , ** options ):
14+ super (UrllibHandler , self ).__init__ (** options )
15+ self .allowed_schemes = allowed_schemes
16+
17+ def __call__ (self , url , timeout = 1 ):
18+ assert urlparse (url ).scheme in self .allowed_schemes
19+
20+ f = urlopen (url , timeout = timeout )
21+
22+ with contextlib .closing (f ) as fh :
23+ return super (UrllibHandler , self ).__call__ (fh )
Original file line number Diff line number Diff line change @@ -29,7 +29,6 @@ install_requires =
2929 PyYAML>=5.1
3030 six
3131 pathlib2; python_version<"3.0"
32- requests
3332tests_require =
3433 mock; python_version<"3.0"
3534 pytest
@@ -47,6 +46,7 @@ exclude =
4746
4847[options.extras_require]
4948dev = pre-commit
49+ requests = requests
5050
5151[tool:pytest]
5252addopts = -sv --flake8 --junitxml reports/junit.xml --cov openapi_spec_validator --cov-report term-missing --cov-report xml:reports/coverage.xml
You can’t perform that action at this time.
0 commit comments