import * as React from 'react'; import { OpenAPIV3 } from 'openapi-types'; import { OpenAPIClientContext } from './types'; import { InteractiveSection } from './InteractiveSection'; import { Markdown } from './Markdown'; import { OpenAPIOperationData } from './fetchOpenAPIOperation'; /** * Present securities authorization that can be used for this operation. */ export function OpenAPISecurities(props: { securities: OpenAPIOperationData['securities']; context: OpenAPIClientContext; }) { const { securities, context } = props; if (securities.length === 0) { return null; } return ( { return { key: key, label: key, body: ( <>

{getLabelForType(security)}

{security.description ? ( ) : null} ), }; })} /> ); } function getLabelForType(security: OpenAPIV3.SecuritySchemeObject) { switch (security.type) { case 'apiKey': return 'API Key'; case 'http': if (security.scheme === 'basic') { return 'Basic Auth'; } if (security.scheme == 'bearer') { return `Bearer Token ${security.bearerFormat ? `(${security.bearerFormat})` : ''}`; } return 'HTTP'; case 'oauth2': return 'OAuth2'; case 'openIdConnect': return 'OpenID Connect'; default: // @ts-ignore return security.type; } }