|
12 | 12 |
|
13 | 13 | import tornado.httpclient
|
14 | 14 | import tornado.web
|
| 15 | + |
| 16 | +try: |
| 17 | + from openapi_core import V30RequestValidator, V30ResponseValidator # type:ignore[attr-defined] |
| 18 | +except ImportError: |
| 19 | + V30RequestValidator = None |
| 20 | + V30ResponseValidator = None |
| 21 | + from openapi_core import openapi_request_validator, openapi_response_validator |
15 | 22 | from openapi_core.spec.paths import Spec
|
16 |
| -from openapi_core.validation.request import openapi_request_validator |
17 | 23 | from openapi_core.validation.request.datatypes import RequestParameters
|
18 |
| -from openapi_core.validation.response import openapi_response_validator |
19 | 24 | from tornado.httpclient import HTTPRequest, HTTPResponse
|
20 | 25 | from werkzeug.datastructures import Headers, ImmutableMultiDict
|
21 | 26 |
|
@@ -95,6 +100,8 @@ def method(self) -> str:
|
95 | 100 |
|
96 | 101 | @property
|
97 | 102 | def body(self) -> Optional[str]:
|
| 103 | + if self.request.body is None: |
| 104 | + return None |
98 | 105 | if not isinstance(self.request.body, bytes):
|
99 | 106 | raise AssertionError('Request body is invalid')
|
100 | 107 | return self.request.body.decode("utf-8")
|
@@ -142,11 +149,17 @@ def validate_request(response):
|
142 | 149 | openapi_spec = get_openapi_spec()
|
143 | 150 |
|
144 | 151 | request = TornadoOpenAPIRequest(response.request, openapi_spec)
|
145 |
| - result = openapi_request_validator.validate(openapi_spec, request) |
| 152 | + if V30RequestValidator: |
| 153 | + result = V30RequestValidator(openapi_spec).validate(request) |
| 154 | + else: |
| 155 | + result = openapi_request_validator.validate(openapi_spec, request) |
146 | 156 | result.raise_for_errors()
|
147 | 157 |
|
148 | 158 | response = TornadoOpenAPIResponse(response)
|
149 |
| - result2 = openapi_response_validator.validate(openapi_spec, request, response) |
| 159 | + if V30ResponseValidator: |
| 160 | + result2 = V30ResponseValidator(openapi_spec).validate(request, response) |
| 161 | + else: |
| 162 | + result2 = openapi_response_validator.validate(openapi_spec, request, response) |
150 | 163 | result2.raise_for_errors()
|
151 | 164 |
|
152 | 165 |
|
|
0 commit comments