|
4 | 4 |
|
5 | 5 | from openapi_core.casting.schemas.exceptions import CastError
|
6 | 6 | from openapi_core.deserializing.exceptions import DeserializeError
|
| 7 | +from openapi_core.deserializing.parameters.factories import ( |
| 8 | + ParameterDeserializersFactory, |
| 9 | +) |
7 | 10 | from openapi_core.exceptions import (
|
8 | 11 | MissingRequiredParameter, MissingParameter,
|
9 | 12 | MissingRequiredRequestBody, MissingRequestBody,
|
10 | 13 | )
|
11 | 14 | from openapi_core.security.exceptions import SecurityError
|
| 15 | +from openapi_core.security.factories import SecurityProviderFactory |
12 | 16 | from openapi_core.schema.parameters import get_aslist, get_explode
|
13 | 17 | from openapi_core.templating.media_types.exceptions import MediaTypeFinderError
|
14 | 18 | from openapi_core.templating.paths.exceptions import PathError
|
15 | 19 | from openapi_core.unmarshalling.schemas.enums import UnmarshalContext
|
16 | 20 | from openapi_core.unmarshalling.schemas.exceptions import (
|
17 | 21 | UnmarshalError, ValidateError,
|
18 | 22 | )
|
| 23 | +from openapi_core.unmarshalling.schemas.factories import ( |
| 24 | + SchemaUnmarshallersFactory, |
| 25 | +) |
19 | 26 | from openapi_core.validation.exceptions import InvalidSecurity
|
20 | 27 | from openapi_core.validation.request.datatypes import (
|
21 | 28 | RequestParameters, RequestValidationResult,
|
|
25 | 32 |
|
26 | 33 | class RequestValidator(BaseValidator):
|
27 | 34 |
|
| 35 | + @property |
| 36 | + def schema_unmarshallers_factory(self): |
| 37 | + spec_resolver = self.spec.accessor.dereferencer.resolver_manager.\ |
| 38 | + resolver |
| 39 | + return SchemaUnmarshallersFactory( |
| 40 | + spec_resolver, self.format_checker, |
| 41 | + self.custom_formatters, context=UnmarshalContext.REQUEST, |
| 42 | + ) |
| 43 | + |
| 44 | + @property |
| 45 | + def security_provider_factory(self): |
| 46 | + return SecurityProviderFactory() |
| 47 | + |
| 48 | + @property |
| 49 | + def parameter_deserializers_factory(self): |
| 50 | + return ParameterDeserializersFactory() |
| 51 | + |
28 | 52 | def validate(self, request):
|
29 | 53 | try:
|
30 | 54 | path, operation, _, path_result, _ = self._find_path(request)
|
@@ -212,9 +236,7 @@ def _get_security_value(self, scheme_name, request):
|
212 | 236 | if scheme_name not in security_schemes:
|
213 | 237 | return
|
214 | 238 | scheme = security_schemes[scheme_name]
|
215 |
| - from openapi_core.security.factories import SecurityProviderFactory |
216 |
| - security_provider_factory = SecurityProviderFactory() |
217 |
| - security_provider = security_provider_factory.create(scheme) |
| 239 | + security_provider = self.security_provider_factory.create(scheme) |
218 | 240 | return security_provider(request)
|
219 | 241 |
|
220 | 242 | def _get_parameter_value(self, param, request):
|
@@ -244,14 +266,5 @@ def _get_body_value(self, request_body, request):
|
244 | 266 | return request.body
|
245 | 267 |
|
246 | 268 | def _deserialise_parameter(self, param, value):
|
247 |
| - from openapi_core.deserializing.parameters.factories import ( |
248 |
| - ParameterDeserializersFactory, |
249 |
| - ) |
250 |
| - deserializers_factory = ParameterDeserializersFactory() |
251 |
| - deserializer = deserializers_factory.create(param) |
| 269 | + deserializer = self.parameter_deserializers_factory.create(param) |
252 | 270 | return deserializer(value)
|
253 |
| - |
254 |
| - def _unmarshal(self, param_or_media_type, value): |
255 |
| - return super(RequestValidator, self)._unmarshal( |
256 |
| - param_or_media_type, value, context=UnmarshalContext.REQUEST, |
257 |
| - ) |
|
0 commit comments