/** This component displays API requests in multiple different formats using the tabs component. It syncs across the page. Please note: it doees NOT cover all kinds of API requests just yet. If the type you're looking for isn't included, you may need to do some extra development before it can be used. In the future, it may be necessary to separate into multiple components based on request types, for instance. **/ import React from 'react'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; const indentation = 2; type Props = { verb: string; payload?: any; url: string; title?: string; endpointType?: 'Proxy API' | 'Unleash server API'; }; const Component: React.FC = ({ verb, payload, url, title, endpointType = 'Unleash server API', }) => { const verbUpper = verb?.toUpperCase() || ''; const prettyPayload = JSON.stringify(payload, null, indentation); const [baseUrl, authToken] = endpointType === 'Unleash server API' ? ['unleash-url', 'API-token'] : ['proxy-url', 'proxy-client-key']; const httpBlock = ( payload ? ` ${verbUpper} <${baseUrl}>/${url} Authorization: <${authToken}> content-type: application/json ${prettyPayload}` : ` ${verbUpper} <${baseUrl}>/${url} Authorization: <${authToken}> content-type: application/json` ).trim(); const curlBlock = ( payload ? ` curl -H "Content-Type: application/json" \\ -H "Authorization: <${authToken}>" \\ -X ${verbUpper} \\ -d '${prettyPayload}' \\ <${baseUrl}>/${url}` : ` curl -H "Content-Type: application/json" \\ -H "Authorization: <${authToken}>" \\ -X ${verbUpper} \\ <${baseUrl}>/${url}` ).trim(); const httpieBlock = ( payload ? `echo '${prettyPayload}' \\ | http ${verbUpper} \\ <${baseUrl}>/${url} \\ Authorization:<${authToken}>` : ` http ${verbUpper} \\ <${baseUrl}>/${url} \\ Authorization:<${authToken}>`.trim() ).trim(); return ( {httpBlock} {curlBlock} {httpieBlock} ); }; export default Component;