1
1
const R = require ( 'ramda' ) ;
2
2
const {
3
- isMember, isExtension, hasKey, getValue,
3
+ isArray , isMember, isExtension, hasKey, getValue,
4
4
} = require ( '../../predicates' ) ;
5
5
const {
6
+ createWarning,
6
7
createUnsupportedMemberWarning,
7
8
createInvalidMemberWarning,
8
9
createIdentifierNotUniqueWarning,
@@ -13,6 +14,7 @@ const parseObject = require('../parseObject');
13
14
const parseString = require ( '../parseString' ) ;
14
15
const parseResponsesObject = require ( './parseResponsesObject' ) ;
15
16
const parseParameterObjects = require ( './parseParameterObjects' ) ;
17
+ const parseSecurityRequirementObject = require ( './parseSecurityRequirementObject' ) ;
16
18
const parseRequestBodyObject = require ( './parseRequestBodyObject' ) ;
17
19
const parseReference = require ( '../parseReference' ) ;
18
20
@@ -21,7 +23,7 @@ const parseRequestBodyObjectOrRef = parseReference('requestBodies', parseRequest
21
23
const name = 'Operation Object' ;
22
24
const requiredKeys = [ 'responses' ] ;
23
25
const unsupportedKeys = [
24
- 'tags' , 'externalDocs' , 'callbacks' , 'deprecated' , 'security' ,
26
+ 'tags' , 'externalDocs' , 'callbacks' , 'deprecated' ,
25
27
] ;
26
28
const isUnsupportedKey = R . anyPass ( R . map ( hasKey , unsupportedKeys ) ) ;
27
29
@@ -102,13 +104,18 @@ function parseOperationObject(context, path, member) {
102
104
) ,
103
105
] ) ) ;
104
106
107
+ const parseSecurity = pipeParseResult ( namespace ,
108
+ R . unless ( isArray , createWarning ( namespace , `'${ name } ' 'security' is not an array` ) ) ,
109
+ R . compose ( R . chain ( parseSecurityRequirementObject ( context ) ) , R . constructN ( 1 , namespace . elements . Array ) ) ) ;
110
+
105
111
const parseMember = R . cond ( [
106
112
[ hasKey ( 'summary' ) , parseString ( context , name , false ) ] ,
107
113
[ hasKey ( 'description' ) , parseCopy ( context , name , false ) ] ,
108
114
[ hasKey ( 'operationId' ) , pipeParseResult ( namespace , parseString ( context , name , false ) , parseOperationId ) ] ,
109
115
[ hasKey ( 'responses' ) , R . compose ( parseResponsesObject ( context ) , getValue ) ] ,
110
116
[ hasKey ( 'requestBody' ) , R . compose ( parseRequestBodyObjectOrRef ( context ) , getValue ) ] ,
111
117
[ hasKey ( 'parameters' ) , R . compose ( parseParameterObjects ( context , name ) , getValue ) ] ,
118
+ [ hasKey ( 'security' ) , R . compose ( parseSecurity , getValue ) ] ,
112
119
113
120
[ isUnsupportedKey , createUnsupportedMemberWarning ( namespace , name ) ] ,
114
121
@@ -161,6 +168,13 @@ function parseOperationObject(context, path, member) {
161
168
}
162
169
}
163
170
171
+ const security = operation . get ( 'security' ) ;
172
+ if ( security ) {
173
+ transactions . forEach ( ( transaction ) => {
174
+ transaction . attributes . set ( 'authSchemeRequirements' , security ) ;
175
+ } ) ;
176
+ }
177
+
164
178
return transition ;
165
179
} ) ;
166
180
0 commit comments