1111from openapi_core .contrib .falcon .responses import FalconOpenAPIResponse
1212from openapi_core .spec import Spec
1313from openapi_core .validation .processors import OpenAPIProcessor
14- from openapi_core .validation .request import openapi_request_validator
1514from openapi_core .validation .request .datatypes import RequestValidationResult
16- from openapi_core .validation .response import openapi_response_validator
15+ from openapi_core .validation .request . protocols import RequestValidator
1716from openapi_core .validation .response .datatypes import ResponseValidationResult
17+ from openapi_core .validation .response .protocols import ResponseValidator
1818
1919
20- class FalconOpenAPIMiddleware :
20+ class FalconOpenAPIMiddleware ( OpenAPIProcessor ) :
2121
2222 request_class = FalconOpenAPIRequest
2323 response_class = FalconOpenAPIResponse
@@ -26,13 +26,17 @@ class FalconOpenAPIMiddleware:
2626 def __init__ (
2727 self ,
2828 spec : Spec ,
29- validation_processor : OpenAPIProcessor ,
29+ request_validator_cls : Optional [Type [RequestValidator ]] = None ,
30+ response_validator_cls : Optional [Type [ResponseValidator ]] = None ,
3031 request_class : Type [FalconOpenAPIRequest ] = FalconOpenAPIRequest ,
3132 response_class : Type [FalconOpenAPIResponse ] = FalconOpenAPIResponse ,
3233 errors_handler : Optional [FalconOpenAPIErrorsHandler ] = None ,
3334 ):
34- self .spec = spec
35- self .validation_processor = validation_processor
35+ super ().__init__ (
36+ spec ,
37+ request_validator_cls = request_validator_cls ,
38+ response_validator_cls = response_validator_cls ,
39+ )
3640 self .request_class = request_class or self .request_class
3741 self .response_class = response_class or self .response_class
3842 self .errors_handler = errors_handler or self .errors_handler
@@ -41,33 +45,33 @@ def __init__(
4145 def from_spec (
4246 cls ,
4347 spec : Spec ,
48+ request_validator_cls : Optional [Type [RequestValidator ]] = None ,
49+ response_validator_cls : Optional [Type [ResponseValidator ]] = None ,
4450 request_class : Type [FalconOpenAPIRequest ] = FalconOpenAPIRequest ,
4551 response_class : Type [FalconOpenAPIResponse ] = FalconOpenAPIResponse ,
4652 errors_handler : Optional [FalconOpenAPIErrorsHandler ] = None ,
4753 ) -> "FalconOpenAPIMiddleware" :
48- validation_processor = OpenAPIProcessor (
49- openapi_request_validator , openapi_response_validator
50- )
5154 return cls (
5255 spec ,
53- validation_processor ,
56+ request_validator_cls = request_validator_cls ,
57+ response_validator_cls = response_validator_cls ,
5458 request_class = request_class ,
5559 response_class = response_class ,
5660 errors_handler = errors_handler ,
5761 )
5862
59- def process_request (self , req : Request , resp : Response ) -> None :
63+ def process_request (self , req : Request , resp : Response ) -> None : # type: ignore
6064 openapi_req = self ._get_openapi_request (req )
61- req .context .openapi = self . _process_openapi_request (openapi_req )
65+ req .context .openapi = super (). process_request (openapi_req )
6266 if req .context .openapi .errors :
6367 return self ._handle_request_errors (req , resp , req .context .openapi )
6468
65- def process_response (
69+ def process_response ( # type: ignore
6670 self , req : Request , resp : Response , resource : Any , req_succeeded : bool
6771 ) -> None :
6872 openapi_req = self ._get_openapi_request (req )
6973 openapi_resp = self ._get_openapi_response (resp )
70- resp .context .openapi = self . _process_openapi_response (
74+ resp .context .openapi = super (). process_response (
7175 openapi_req , openapi_resp
7276 )
7377 if resp .context .openapi .errors :
@@ -98,19 +102,3 @@ def _get_openapi_response(
98102 self , response : Response
99103 ) -> FalconOpenAPIResponse :
100104 return self .response_class (response )
101-
102- def _process_openapi_request (
103- self , openapi_request : FalconOpenAPIRequest
104- ) -> RequestValidationResult :
105- return self .validation_processor .process_request (
106- self .spec , openapi_request
107- )
108-
109- def _process_openapi_response (
110- self ,
111- opneapi_request : FalconOpenAPIRequest ,
112- openapi_response : FalconOpenAPIResponse ,
113- ) -> ResponseValidationResult :
114- return self .validation_processor .process_response (
115- self .spec , opneapi_request , openapi_response
116- )
0 commit comments