1
1
"""OpenAPI core contrib django middlewares module"""
2
+ from typing import Callable
3
+
2
4
from django .conf import settings
3
5
from 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
4
9
5
10
from openapi_core .contrib .django .handlers import DjangoOpenAPIErrorsHandler
6
11
from openapi_core .contrib .django .requests import DjangoOpenAPIRequest
7
12
from openapi_core .contrib .django .responses import DjangoOpenAPIResponse
8
13
from openapi_core .validation .processors import OpenAPIProcessor
9
14
from 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
10
17
from 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
11
20
12
21
13
22
class DjangoOpenAPIMiddleware :
@@ -16,7 +25,7 @@ class DjangoOpenAPIMiddleware:
16
25
response_class = DjangoOpenAPIResponse
17
26
errors_handler = DjangoOpenAPIErrorsHandler ()
18
27
19
- def __init__ (self , get_response ):
28
+ def __init__ (self , get_response : Callable [[ HttpRequest ], HttpResponse ] ):
20
29
self .get_response = get_response
21
30
22
31
if not hasattr (settings , "OPENAPI_SPEC" ):
@@ -26,7 +35,7 @@ def __init__(self, get_response):
26
35
openapi_request_validator , openapi_response_validator
27
36
)
28
37
29
- def __call__ (self , request ) :
38
+ def __call__ (self , request : HttpRequest ) -> HttpResponse :
30
39
openapi_request = self ._get_openapi_request (request )
31
40
req_result = self .validation_processor .process_request (
32
41
settings .OPENAPI_SPEC , openapi_request
@@ -46,14 +55,25 @@ def __call__(self, request):
46
55
47
56
return response
48
57
49
- def _handle_request_errors (self , request_result , req ):
58
+ def _handle_request_errors (
59
+ self , request_result : RequestValidationResult , req : HttpRequest
60
+ ) -> JsonResponse :
50
61
return self .errors_handler .handle (request_result .errors , req , None )
51
62
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 :
53
69
return self .errors_handler .handle (response_result .errors , req , resp )
54
70
55
- def _get_openapi_request (self , request ):
71
+ def _get_openapi_request (
72
+ self , request : HttpRequest
73
+ ) -> DjangoOpenAPIRequest :
56
74
return self .request_class (request )
57
75
58
- def _get_openapi_response (self , response ):
76
+ def _get_openapi_response (
77
+ self , response : HttpResponse
78
+ ) -> DjangoOpenAPIResponse :
59
79
return self .response_class (response )
0 commit comments