Skip to content

Commit 624bf3d

Browse files
committed
Validate body and parameters shortcuts
1 parent 37f09d7 commit 624bf3d

File tree

3 files changed

+31
-20
lines changed

3 files changed

+31
-20
lines changed

openapi_core/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
"""OpenAPI core module"""
2-
from openapi_core.shortcuts import create_spec
2+
from openapi_core.shortcuts import (
3+
create_spec, validate_parameters, validate_body,
4+
)
35

46
__author__ = 'Artur Maciąg'
57
__email__ = 'maciag.artur@gmail.com'
68
__version__ = '0.2.2'
79
__url__ = 'https://github.com/p1c2u/openapi-core'
810
__license__ = 'BSD 3-Clause License'
911

10-
__all__ = ['create_spec', ]
12+
__all__ = ['create_spec', 'validate_parameters', 'validate_body']

openapi_core/shortcuts.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
from openapi_spec_validator.validators import Dereferencer
44
from openapi_spec_validator import default_handlers
55

6+
from openapi_core.exceptions import OpenAPIParameterError, OpenAPIBodyError
67
from openapi_core.specs import SpecFactory
8+
from openapi_core.validators import RequestValidator
79

810

911
def create_spec(spec_dict, spec_url=''):
@@ -12,3 +14,25 @@ def create_spec(spec_dict, spec_url=''):
1214
dereferencer = Dereferencer(spec_resolver)
1315
spec_factory = SpecFactory(dereferencer)
1416
return spec_factory.create(spec_dict, spec_url=spec_url)
17+
18+
19+
def validate_parameters(spec, request):
20+
validator = RequestValidator(spec)
21+
result = validator.validate(request)
22+
try:
23+
result.validate()
24+
except OpenAPIBodyError:
25+
return result.parameters
26+
else:
27+
return result.parameters
28+
29+
30+
def validate_body(spec, request):
31+
validator = RequestValidator(spec)
32+
result = validator.validate(request)
33+
try:
34+
result.validate()
35+
except OpenAPIParameterError:
36+
return result.body
37+
else:
38+
return result.body

openapi_core/wrappers.py

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33

44
from six.moves.urllib.parse import urljoin
55

6-
from openapi_core.exceptions import OpenAPIParameterError, OpenAPIBodyError
7-
from openapi_core.validators import RequestValidator
6+
from openapi_core.shortcuts import validate_parameters, validate_body
87

98

109
class BaseOpenAPIRequest(object):
@@ -30,14 +29,7 @@ def get_body(self, spec):
3029
DeprecationWarning,
3130
)
3231
# backward compatibility
33-
validator = RequestValidator(spec)
34-
result = validator.validate(self)
35-
try:
36-
result.validate()
37-
except OpenAPIParameterError:
38-
return result.body
39-
else:
40-
return result.body
32+
return validate_body(spec, self)
4133

4234
def get_parameters(self, spec):
4335
warnings.warn(
@@ -46,14 +38,7 @@ def get_parameters(self, spec):
4638
DeprecationWarning,
4739
)
4840
# backward compatibility
49-
validator = RequestValidator(spec)
50-
result = validator.validate(self)
51-
try:
52-
result.validate()
53-
except OpenAPIBodyError:
54-
return result.parameters
55-
else:
56-
return result.parameters
41+
return validate_parameters(spec, self)
5742

5843

5944
class MockRequest(BaseOpenAPIRequest):

0 commit comments

Comments
 (0)