11"""OpenAPI core contrib django middlewares module"""
2+ from typing import Callable
3+
24from django .conf import settings
35from django .core .exceptions import ImproperlyConfigured
6+ from django .http import JsonResponse
7+ from django .http .request import HttpRequest
8+ from django .http .response import HttpResponse
49
510from openapi_core .contrib .django .handlers import DjangoOpenAPIErrorsHandler
611from openapi_core .contrib .django .requests import DjangoOpenAPIRequest
712from openapi_core .contrib .django .responses import DjangoOpenAPIResponse
813from openapi_core .validation .processors import OpenAPIProcessor
914from openapi_core .validation .request import openapi_request_validator
15+ from openapi_core .validation .request .datatypes import RequestValidationResult
16+ from openapi_core .validation .request .protocols import Request
1017from openapi_core .validation .response import openapi_response_validator
18+ from openapi_core .validation .response .datatypes import ResponseValidationResult
19+ from openapi_core .validation .response .protocols import Response
1120
1221
1322class DjangoOpenAPIMiddleware :
@@ -16,7 +25,7 @@ class DjangoOpenAPIMiddleware:
1625 response_class = DjangoOpenAPIResponse
1726 errors_handler = DjangoOpenAPIErrorsHandler ()
1827
19- def __init__ (self , get_response ):
28+ def __init__ (self , get_response : Callable [[ HttpRequest ], HttpResponse ] ):
2029 self .get_response = get_response
2130
2231 if not hasattr (settings , "OPENAPI_SPEC" ):
@@ -26,7 +35,7 @@ def __init__(self, get_response):
2635 openapi_request_validator , openapi_response_validator
2736 )
2837
29- def __call__ (self , request ) :
38+ def __call__ (self , request : HttpRequest ) -> HttpResponse :
3039 openapi_request = self ._get_openapi_request (request )
3140 req_result = self .validation_processor .process_request (
3241 settings .OPENAPI_SPEC , openapi_request
@@ -46,14 +55,25 @@ def __call__(self, request):
4655
4756 return response
4857
49- def _handle_request_errors (self , request_result , req ):
58+ def _handle_request_errors (
59+ self , request_result : RequestValidationResult , req : HttpRequest
60+ ) -> JsonResponse :
5061 return self .errors_handler .handle (request_result .errors , req , None )
5162
52- def _handle_response_errors (self , response_result , req , resp ):
63+ def _handle_response_errors (
64+ self ,
65+ response_result : ResponseValidationResult ,
66+ req : HttpRequest ,
67+ resp : HttpResponse ,
68+ ) -> JsonResponse :
5369 return self .errors_handler .handle (response_result .errors , req , resp )
5470
55- def _get_openapi_request (self , request ):
71+ def _get_openapi_request (
72+ self , request : HttpRequest
73+ ) -> DjangoOpenAPIRequest :
5674 return self .request_class (request )
5775
58- def _get_openapi_response (self , response ):
76+ def _get_openapi_response (
77+ self , response : HttpResponse
78+ ) -> DjangoOpenAPIResponse :
5979 return self .response_class (response )
0 commit comments