|
8 | 8 | from openapi_core.validation.response.validators import ResponseValidator
|
9 | 9 |
|
10 | 10 |
|
11 |
| -class FalconOpenAPIMiddleware(OpenAPIProcessor): |
| 11 | +class FalconOpenAPIMiddleware: |
| 12 | + |
| 13 | + request_factory = FalconOpenAPIRequestFactory() |
| 14 | + response_factory = FalconOpenAPIResponseFactory() |
| 15 | + errors_handler = FalconOpenAPIErrorsHandler() |
12 | 16 |
|
13 | 17 | def __init__(
|
14 |
| - self, |
15 |
| - request_validator, |
16 |
| - response_validator, |
17 |
| - request_factory, |
18 |
| - response_factory, |
19 |
| - openapi_errors_handler, |
| 18 | + self, |
| 19 | + validation_processor, |
| 20 | + request_factory=None, |
| 21 | + response_factory=None, |
| 22 | + errors_handler=None, |
| 23 | + ): |
| 24 | + self.validation_processor = validation_processor |
| 25 | + self.request_factory = request_factory or self.request_factory |
| 26 | + self.response_factory = response_factory or self.response_factory |
| 27 | + self.errors_handler = errors_handler or self.errors_handler |
| 28 | + |
| 29 | + @classmethod |
| 30 | + def from_spec( |
| 31 | + cls, |
| 32 | + spec, |
| 33 | + request_factory=None, |
| 34 | + response_factory=None, |
| 35 | + errors_handler=None, |
20 | 36 | ):
|
21 |
| - super().__init__(request_validator, response_validator) |
22 |
| - self.request_factory = request_factory |
23 |
| - self.response_factory = response_factory |
24 |
| - self.openapi_errors_handler = openapi_errors_handler |
| 37 | + request_validator = RequestValidator(spec) |
| 38 | + response_validator = ResponseValidator(spec) |
| 39 | + validation_processor = OpenAPIProcessor( |
| 40 | + request_validator, response_validator) |
| 41 | + return cls( |
| 42 | + validation_processor, |
| 43 | + request_factory=request_factory, |
| 44 | + response_factory=response_factory, |
| 45 | + errors_handler=errors_handler, |
| 46 | + ) |
25 | 47 |
|
26 | 48 | def process_request(self, req, resp):
|
27 | 49 | openapi_req = self._get_openapi_request(req)
|
28 |
| - req_result = super().process_request(openapi_req) |
| 50 | + req_result = self.validation_processor.process_request(openapi_req) |
29 | 51 | if req_result.errors:
|
30 | 52 | return self._handle_request_errors(req, resp, req_result)
|
31 | 53 | req.openapi = req_result
|
32 | 54 |
|
33 | 55 | def process_response(self, req, resp, resource, req_succeeded):
|
34 | 56 | openapi_req = self._get_openapi_request(req)
|
35 | 57 | openapi_resp = self._get_openapi_response(resp)
|
36 |
| - resp_result = super().process_response(openapi_req, openapi_resp) |
| 58 | + resp_result = self.validation_processor.process_response( |
| 59 | + openapi_req, openapi_resp) |
37 | 60 | if resp_result.errors:
|
38 | 61 | return self._handle_response_errors(req, resp, resp_result)
|
39 | 62 |
|
40 | 63 | def _handle_request_errors(self, req, resp, request_result):
|
41 |
| - return self.openapi_errors_handler.handle( |
| 64 | + return self.errors_handler.handle( |
42 | 65 | req, resp, request_result.errors)
|
43 | 66 |
|
44 | 67 | def _handle_response_errors(self, req, resp, response_result):
|
45 |
| - return self.openapi_errors_handler.handle( |
| 68 | + return self.errors_handler.handle( |
46 | 69 | req, resp, response_result.errors)
|
47 | 70 |
|
48 | 71 | def _get_openapi_request(self, request):
|
49 | 72 | return self.request_factory.create(request)
|
50 | 73 |
|
51 | 74 | def _get_openapi_response(self, response):
|
52 | 75 | return self.response_factory.create(response)
|
53 |
| - |
54 |
| - @classmethod |
55 |
| - def from_spec( |
56 |
| - cls, |
57 |
| - spec, |
58 |
| - request_factory=FalconOpenAPIRequestFactory, |
59 |
| - response_factory=FalconOpenAPIResponseFactory, |
60 |
| - openapi_errors_handler=FalconOpenAPIErrorsHandler, |
61 |
| - ): |
62 |
| - request_validator = RequestValidator(spec) |
63 |
| - response_validator = ResponseValidator(spec) |
64 |
| - return cls( |
65 |
| - request_validator=request_validator, |
66 |
| - response_validator=response_validator, |
67 |
| - request_factory=request_factory, |
68 |
| - response_factory=response_factory, |
69 |
| - openapi_errors_handler=openapi_errors_handler, |
70 |
| - ) |
|
0 commit comments