(args: {
securityRequirement: OpenAPIV3.OperationObject['security'];
securities: OpenAPIOperationData['securities'];
})
| 265 | * Extract security information for an operation based on its security requirements and the spec security schemes. |
| 266 | */ |
| 267 | export function extractOperationSecurityInfo(args: { |
| 268 | securityRequirement: OpenAPIV3.OperationObject['security']; |
| 269 | securities: OpenAPIOperationData['securities']; |
| 270 | }): OperationSecurityInfo[] { |
| 271 | const { securityRequirement, securities } = args; |
| 272 | const securitiesMap = new Map(securities); |
| 273 | |
| 274 | // When no security requirement include every schemes |
| 275 | if (!securityRequirement || securityRequirement.length === 0) { |
| 276 | return securities.map(([key, security]) => ({ |
| 277 | key, |
| 278 | label: key, |
| 279 | schemes: [security], |
| 280 | })); |
| 281 | } |
| 282 | |
| 283 | return securityRequirement.map((requirement, idx) => { |
| 284 | const schemeKeys = Object.keys(requirement); |
| 285 | |
| 286 | return { |
| 287 | key: `security-${idx}`, |
| 288 | label: schemeKeys.join(' & '), |
| 289 | schemes: schemeKeys |
| 290 | .map((schemeKey) => securitiesMap.get(schemeKey)) |
| 291 | .filter((s): s is OpenAPICustomSecurityScheme => s !== undefined), |
| 292 | }; |
| 293 | }); |
| 294 | } |
no test coverage detected