Skip to content

Commit 37672cf

Browse files
committed
Validators refactor
1 parent 097aba9 commit 37672cf

9 files changed

Lines changed: 424 additions & 347 deletions

File tree

openapi_core/__init__.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,20 @@
11
# -*- coding: utf-8 -*-
22
"""OpenAPI core module"""
33
from openapi_core.shortcuts import (
4-
create_spec, validate_parameters, validate_body, validate_data,
4+
create_spec, validate_request, validate_response,
5+
spec_validate_body, spec_validate_parameters,
6+
spec_validate_data, spec_validate_data, spec_validate_headers,
7+
)
8+
from openapi_core.validation.request.validators import (
9+
RequestValidator,
10+
RequestBodyValidator,
11+
RequestParametersValidator,
12+
RequestSecurityValidator,
13+
)
14+
from openapi_core.validation.response.validators import (
15+
ResponseValidator,
16+
ResponseDataValidator,
17+
ResponseHeadersValidator,
518
)
619

720
__author__ = 'Artur Maciag'
@@ -11,5 +24,10 @@
1124
__license__ = 'BSD 3-Clause License'
1225

1326
__all__ = [
14-
'create_spec', 'validate_parameters', 'validate_body', 'validate_data',
27+
'create_spec', 'validate_request', 'validate_response',
28+
'spec_validate_body', 'spec_validate_parameters', 'spec_validate_data',
29+
'validate_data', 'spec_validate_headers',
30+
'RequestValidator', 'ResponseValidator', 'RequestBodyValidator',
31+
'RequestParametersValidator', 'RequestSecurityValidator',
32+
'ResponseDataValidator', 'ResponseHeadersValidator',
1533
]

openapi_core/shortcuts.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@
22
# backward compatibility
33
from openapi_core.spec.shortcuts import create_spec
44
from openapi_core.validation.request.shortcuts import (
5-
spec_validate_body as validate_body,
6-
spec_validate_parameters as validate_parameters,
5+
validate_request,
6+
spec_validate_body, spec_validate_parameters, spec_validate_security,
77
)
8-
from openapi_core.validation.request.validators import RequestValidator
98
from openapi_core.validation.response.shortcuts import (
10-
spec_validate_data as validate_data
9+
validate_response,
10+
spec_validate_data, spec_validate_headers,
1111
)
12-
from openapi_core.validation.response.validators import ResponseValidator
1312

1413
__all__ = [
15-
'create_spec', 'validate_body', 'validate_parameters', 'validate_data',
16-
'RequestValidator', 'ResponseValidator',
14+
'create_spec',
15+
'validate_request', 'validate_response',
16+
'spec_validate_body', 'spec_validate_parameters', 'spec_validate_security',
17+
'validate_data', 'spec_validate_headers',
1718
]
Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,47 @@
11
"""OpenAPI core validation request shortcuts module"""
2-
import warnings
2+
from functools import partial
33

4-
from openapi_core.validation.request.validators import RequestValidator
4+
from openapi_core.validation.request.validators import (
5+
RequestValidator,
6+
RequestBodyValidator,
7+
RequestParametersValidator,
8+
RequestSecurityValidator,
9+
)
510

611

7-
def validate_request(validator, request, failsafe=None):
8-
if failsafe is None:
9-
failsafe = ()
12+
def validate_request(validator, request):
1013
result = validator.validate(request)
11-
try:
12-
result.raise_for_errors()
13-
except failsafe:
14-
pass
14+
result.raise_for_errors()
1515
return result
1616

1717

18-
def validate_parameters(validator, request):
19-
warnings.warn(
20-
"validate_parameters shortcut is deprecated, "
21-
"use validator.validate instead",
22-
DeprecationWarning,
23-
)
24-
result = validator._validate_parameters(request)
25-
result.raise_for_errors()
26-
return result
18+
def spec_validate_request(
19+
spec, request, request_factory=None, validator_class=RequestValidator,
20+
result_attribute=None,
21+
):
22+
if request_factory is not None:
23+
request = request_factory(request)
2724

25+
validator = validator_class(spec)
2826

29-
def validate_body(validator, request):
30-
warnings.warn(
31-
"validate_body shortcut is deprecated, "
32-
"use validator.validate instead",
33-
DeprecationWarning,
34-
)
35-
result = validator._validate_body(request)
27+
result = validator.validate(request)
3628
result.raise_for_errors()
37-
return result
38-
3929

40-
def spec_validate_parameters(spec, request, request_factory=None):
41-
if request_factory is not None:
42-
request = request_factory(request)
30+
if result_attribute is None:
31+
return result
32+
return getattr(result, result_attribute)
4333

44-
validator = RequestValidator(spec)
45-
result = validate_parameters(validator, request)
4634

47-
return result.parameters
35+
spec_validate_parameters = partial(
36+
spec_validate_request,
37+
validator_class=RequestParametersValidator, result_attribute='parameters')
4838

4939

50-
def spec_validate_body(spec, request, request_factory=None):
51-
if request_factory is not None:
52-
request = request_factory(request)
40+
spec_validate_body = partial(
41+
spec_validate_request,
42+
validator_class=RequestBodyValidator, result_attribute='body')
5343

54-
validator = RequestValidator(spec)
55-
result = validate_body(validator, request)
5644

57-
return result.body
45+
spec_validate_security = partial(
46+
spec_validate_request,
47+
validator_class=RequestSecurityValidator, result_attribute='security')

0 commit comments

Comments
 (0)