44from openapi_spec_validator .validators import PathItemValidator
55
66from openapi_core .compat import lru_cache
7+ from openapi_core .schema .external_docs .factories import (
8+ ExternalDocumentationFactory ,
9+ )
710from openapi_core .schema .operations .models import Operation
811from openapi_core .schema .parameters .generators import ParametersGenerator
912from openapi_core .schema .request_bodies .factories import RequestBodyFactory
1013from openapi_core .schema .responses .generators import ResponsesGenerator
14+ from openapi_core .schema .security .factories import SecurityRequirementFactory
1115
1216
1317class OperationsGenerator (object ):
@@ -32,6 +36,21 @@ def generate(self, path_name, path):
3236 parameters_list )
3337 operation_id = operation_deref .get ('operationId' )
3438 tags_list = operation_deref .get ('tags' , [])
39+ summary = operation_deref .get ('summary' )
40+ description = operation_deref .get ('description' )
41+ security_requirements_list = operation_deref .get ('security' , [])
42+
43+ security = None
44+ if security_requirements_list :
45+ security = list (map (
46+ self .security_requirement_factory .create ,
47+ security_requirements_list ))
48+
49+ external_docs = None
50+ if 'externalDocs' in operation_deref :
51+ external_docs_spec = operation_deref .get ('externalDocs' )
52+ external_docs = self .external_docs_factory .create (
53+ external_docs_spec )
3554
3655 request_body = None
3756 if 'requestBody' in operation_deref :
@@ -43,8 +62,10 @@ def generate(self, path_name, path):
4362 http_method ,
4463 Operation (
4564 http_method , path_name , responses , list (parameters ),
65+ summary = summary , description = description ,
66+ external_docs = external_docs , security = security ,
4667 request_body = request_body , deprecated = deprecated ,
47- operation_id = operation_id , tags = list (tags_list )
68+ operation_id = operation_id , tags = list (tags_list ),
4869 ),
4970 )
5071
@@ -58,7 +79,17 @@ def responses_generator(self):
5879 def parameters_generator (self ):
5980 return ParametersGenerator (self .dereferencer , self .schemas_registry )
6081
82+ @property
83+ @lru_cache ()
84+ def external_docs_factory (self ):
85+ return ExternalDocumentationFactory (self .dereferencer )
86+
6187 @property
6288 @lru_cache ()
6389 def request_body_factory (self ):
6490 return RequestBodyFactory (self .dereferencer , self .schemas_registry )
91+
92+ @property
93+ @lru_cache ()
94+ def security_requirement_factory (self ):
95+ return SecurityRequirementFactory (self .dereferencer )
0 commit comments