MCPcopy
hub / github.com/github/docs / getShellExample

Function getShellExample

components/lib/get-rest-code-samples.ts:29–92  ·  view source on GitHub ↗
(operation: Operation, codeSample: CodeSample)

Source from the content-addressed store, hash-verified

27 -d '{"ref":"topic-branch","payload":"{ \"deploy\": \"migrate\" }","description":"Deploy request from hubot"}'
28*/
29export function getShellExample(operation: Operation, codeSample: CodeSample) {
30 const { currentVersion } = useVersion()
31 const { allVersions } = useMainContext()
32 const defaultAcceptHeader = getAcceptHeader(codeSample)
33
34 // For operations that upload data using octet-stream, you need
35 // to explicitly set the content-type header.
36 const contentTypeHeader =
37 codeSample?.request?.contentType === 'application/octet-stream'
38 ? '-H "Content-Type: application/octet-stream"'
39 : ''
40
41 let requestPath = codeSample?.request?.parameters
42 ? parseTemplate(operation.requestPath).expand(codeSample.request.parameters)
43 : operation.requestPath
44
45 const requiredQueryParams = getRequiredQueryParamsPath(operation, codeSample)
46 requestPath += requiredQueryParams ? `?${requiredQueryParams}` : ''
47
48 let requestBodyParams = ''
49 if (codeSample?.request?.bodyParameters) {
50 requestBodyParams = `-d '${JSON.stringify(codeSample.request.bodyParameters).replace(
51 /'/g,
52 "'\\''"
53 )}'`
54
55 const contentType = codeSample.request.contentType
56 if (contentType in CURL_CONTENT_TYPE_MAPPING) {
57 requestBodyParams = ''
58 // Most of the time the example body parameters have a name and value
59 // and are included in an object. But, some cases are a single value
60 // and the type is a string.
61 const { bodyParameters } = codeSample.request
62 if (bodyParameters && typeof bodyParameters === 'object' && !Array.isArray(bodyParameters)) {
63 const paramNames = Object.keys(bodyParameters)
64 paramNames.forEach((elem) => {
65 requestBodyParams = `${requestBodyParams} ${CURL_CONTENT_TYPE_MAPPING[contentType]} "${elem}=${bodyParameters[elem]}"`
66 })
67 } else {
68 requestBodyParams = `${CURL_CONTENT_TYPE_MAPPING[contentType]} "${bodyParameters}"`
69 }
70 }
71 }
72
73 let authHeader = '-H "Authorization: Bearer <YOUR-TOKEN>"'
74 if (operation.subcategory === 'management-console') {
75 authHeader = '-u "api_key:your-password"'
76 }
77
78 const apiVersionHeader =
79 allVersions[currentVersion].apiVersions.length > 0 &&
80 allVersions[currentVersion].latestApiVersion
81 ? `\\\n -H "X-GitHub-Api-Version: ${allVersions[currentVersion].latestApiVersion}"`
82 : ''
83
84 const args = [
85 operation.verb !== 'get' && `-X ${operation.verb.toUpperCase()}`,
86 `-H "Accept: ${defaultAcceptHeader}" \\\n ${authHeader}${apiVersionHeader}`,

Callers 1

RestCodeSamplesFunction · 0.90

Calls 4

useVersionFunction · 0.90
useMainContextFunction · 0.90
getAcceptHeaderFunction · 0.85

Tested by

no test coverage detected