64 lines
1.5 KiB
JavaScript
64 lines
1.5 KiB
JavaScript
export const ShellHttpieCodegen = {
|
|
id: "shell-httpie",
|
|
name: "Shell HTTPie",
|
|
language: "sh",
|
|
generator: ({
|
|
url,
|
|
pathName,
|
|
queryString,
|
|
auth,
|
|
httpUser,
|
|
httpPassword,
|
|
bearerToken,
|
|
method,
|
|
rawInput,
|
|
rawParams,
|
|
rawRequestBody,
|
|
contentType,
|
|
headers,
|
|
}) => {
|
|
const methodsWithBody = ["POST", "PUT", "PATCH", "DELETE"]
|
|
const includeBody = methodsWithBody.includes(method)
|
|
const requestString = []
|
|
|
|
let requestBody = rawInput ? rawParams : rawRequestBody
|
|
requestBody = requestBody.replace(/'/g, "\\'")
|
|
if (requestBody.length !== 0 && includeBody) {
|
|
// Send request body via redirected input
|
|
requestString.push(`echo -n $'${requestBody}' | `)
|
|
}
|
|
|
|
// Executable itself
|
|
requestString.push(`http`)
|
|
|
|
// basic authentication
|
|
if (auth === "Basic Auth") {
|
|
requestString.push(` -a ${httpUser}:${httpPassword}`)
|
|
}
|
|
|
|
// URL
|
|
let escapedUrl = `${url}${pathName}${queryString}`
|
|
escapedUrl = escapedUrl.replace(/'/g, "\\'")
|
|
requestString.push(` ${method} $'${escapedUrl}'`)
|
|
|
|
// All headers
|
|
if (contentType) {
|
|
requestString.push(` 'Content-Type:${contentType}; charset=utf-8'`)
|
|
}
|
|
|
|
if (headers) {
|
|
headers.forEach(({ key, value }) => {
|
|
requestString.push(
|
|
` $'${key.replace(/'/g, "\\'")}:${value.replace(/'/g, "\\'")}'`
|
|
)
|
|
})
|
|
}
|
|
|
|
if (auth === "Bearer Token" || auth === "OAuth 2.0") {
|
|
requestString.push(` 'Authorization:Bearer ${bearerToken}'`)
|
|
}
|
|
|
|
return requestString.join("")
|
|
},
|
|
}
|