4
4
from openapi_spec_validator .validators import PathItemValidator
5
5
6
6
from openapi_core .compat import lru_cache
7
+ from openapi_core .schema .external_docs .factories import (
8
+ ExternalDocumentationFactory ,
9
+ )
7
10
from openapi_core .schema .operations .models import Operation
8
11
from openapi_core .schema .parameters .generators import ParametersGenerator
9
12
from openapi_core .schema .request_bodies .factories import RequestBodyFactory
10
13
from openapi_core .schema .responses .generators import ResponsesGenerator
14
+ from openapi_core .schema .security .factories import SecurityRequirementFactory
15
+ from openapi_core .schema .security .generators import (
16
+ SecurityRequirementsGenerator ,
17
+ )
11
18
12
19
13
20
class OperationsGenerator (object ):
@@ -32,6 +39,21 @@ def generate(self, path_name, path):
32
39
parameters_list )
33
40
operation_id = operation_deref .get ('operationId' )
34
41
tags_list = operation_deref .get ('tags' , [])
42
+ summary = operation_deref .get ('summary' )
43
+ description = operation_deref .get ('description' )
44
+ security_requirements_list = operation_deref .get ('security' , [])
45
+
46
+ security = None
47
+ if security_requirements_list :
48
+ security = list (map (
49
+ self .security_requirement_factory .create ,
50
+ security_requirements_list ))
51
+
52
+ external_docs = None
53
+ if 'externalDocs' in operation_deref :
54
+ external_docs_spec = operation_deref .get ('externalDocs' )
55
+ external_docs = self .external_docs_factory .create (
56
+ external_docs_spec )
35
57
36
58
request_body = None
37
59
if 'requestBody' in operation_deref :
@@ -43,8 +65,10 @@ def generate(self, path_name, path):
43
65
http_method ,
44
66
Operation (
45
67
http_method , path_name , responses , list (parameters ),
68
+ summary = summary , description = description ,
69
+ external_docs = external_docs , security = security ,
46
70
request_body = request_body , deprecated = deprecated ,
47
- operation_id = operation_id , tags = list (tags_list )
71
+ operation_id = operation_id , tags = list (tags_list ),
48
72
),
49
73
)
50
74
@@ -58,7 +82,22 @@ def responses_generator(self):
58
82
def parameters_generator (self ):
59
83
return ParametersGenerator (self .dereferencer , self .schemas_registry )
60
84
85
+ @property
86
+ @lru_cache ()
87
+ def external_docs_factory (self ):
88
+ return ExternalDocumentationFactory (self .dereferencer )
89
+
61
90
@property
62
91
@lru_cache ()
63
92
def request_body_factory (self ):
64
93
return RequestBodyFactory (self .dereferencer , self .schemas_registry )
94
+
95
+ @property
96
+ @lru_cache ()
97
+ def security_requirement_factory (self ):
98
+ return SecurityRequirementFactory (self .dereferencer )
99
+
100
+ @property
101
+ @lru_cache ()
102
+ def security_requirements_generator (self ):
103
+ return SecurityRequirementsGenerator (self .dereferencer )
0 commit comments