|
10 | 10 | from openapi_spec_validator.validation import OpenAPIV2SpecValidator
|
11 | 11 | from openapi_spec_validator.validation import OpenAPIV30SpecValidator
|
12 | 12 | from openapi_spec_validator.validation import OpenAPIV31SpecValidator
|
13 |
| -from openapi_spec_validator.validation.finders import SpecFinder |
14 |
| -from openapi_spec_validator.validation.finders import SpecVersion |
| 13 | +from openapi_spec_validator.validation.exceptions import ValidatorDetectError |
15 | 14 | from openapi_spec_validator.validation.protocols import SupportsValidation
|
16 | 15 | from openapi_spec_validator.validation.types import SpecValidatorType
|
17 | 16 | from openapi_spec_validator.validation.validators import SpecValidator
|
18 |
| - |
19 |
| -SPECS: Mapping[SpecVersion, SpecValidatorType] = { |
20 |
| - SpecVersion("swagger", "2.0"): OpenAPIV2SpecValidator, |
21 |
| - SpecVersion("openapi", "3.0"): OpenAPIV30SpecValidator, |
22 |
| - SpecVersion("openapi", "3.1"): OpenAPIV31SpecValidator, |
| 17 | +from openapi_spec_validator.versions import consts as versions |
| 18 | +from openapi_spec_validator.versions.datatypes import SpecVersion |
| 19 | +from openapi_spec_validator.versions.exceptions import OpenAPIVersionNotFound |
| 20 | +from openapi_spec_validator.versions.shortcuts import get_spec_version |
| 21 | + |
| 22 | +SPEC2VALIDATOR: Mapping[SpecVersion, SpecValidatorType] = { |
| 23 | + versions.OPENAPIV2: OpenAPIV2SpecValidator, |
| 24 | + versions.OPENAPIV30: OpenAPIV30SpecValidator, |
| 25 | + versions.OPENAPIV31: OpenAPIV31SpecValidator, |
23 | 26 | }
|
24 | 27 |
|
25 | 28 |
|
26 | 29 | def get_validator_cls(spec: Schema) -> SpecValidatorType:
|
27 |
| - return SpecFinder(SPECS).find(spec) |
| 30 | + try: |
| 31 | + spec_version = get_spec_version(spec) |
| 32 | + # backward compatibility |
| 33 | + except OpenAPIVersionNotFound: |
| 34 | + raise ValidatorDetectError |
| 35 | + return SPEC2VALIDATOR[spec_version] |
28 | 36 |
|
29 | 37 |
|
30 | 38 | def validate_spec(
|
|
0 commit comments