diff --git a/helpers/codegen/codegen.js b/helpers/codegen/codegen.js index 8e82db5c9..681a8683f 100644 --- a/helpers/codegen/codegen.js +++ b/helpers/codegen/codegen.js @@ -4,6 +4,7 @@ import { CurlCodegen } from "./generators/curl" import { JSAxiosCodegen } from "./generators/js-axios" import { GoNativeCodegen } from "./generators/go-native" import { NodeJsRequestCodegen } from "./generators/nodejs-request" +import { JSjQueryCodegen } from "./generators/js-jQuery" /* Register code generators here. * A code generator is defined as an object with the following structure. @@ -13,7 +14,15 @@ import { NodeJsRequestCodegen } from "./generators/nodejs-request" * generator: (ctx) => string * */ -export const codegens = [JSXHRCodegen, JSFetchCodegen, CurlCodegen, JSAxiosCodegen, GoNativeCodegen, NodeJsRequestCodegen] +export const codegens = [ + JSXHRCodegen, + JSFetchCodegen, + CurlCodegen, + JSAxiosCodegen, + GoNativeCodegen, + NodeJsRequestCodegen, + JSjQueryCodegen, +] export function generateCodeWithGenerator(codegenID, context) { if (codegenID) { diff --git a/helpers/codegen/generators/js-jQuery.js b/helpers/codegen/generators/js-jQuery.js new file mode 100644 index 000000000..2e60cb3bb --- /dev/null +++ b/helpers/codegen/generators/js-jQuery.js @@ -0,0 +1,57 @@ +export const JSjQueryCodegen = { + id: "js-jQuery", + name: "JavaScript jQuery", + generator: ({ + url, + pathName, + queryString, + auth, + httpUser, + httpPassword, + bearerToken, + method, + rawInput, + rawParams, + rawRequestBody, + contentType, + headers, + }) => { + const requestString = [] + let genHeaders = [] + + requestString.push(`jQuery.ajax({\n url: "${url}${pathName}${queryString}"`) + requestString.push(`,\n method: "${method.toUpperCase()}"`) + const requestBody = rawInput ? rawParams : rawRequestBody + + if (requestBody.length !== 0) { + requestString.push(`,\n body: ${requestBody}`) + } + if (headers) { + headers.forEach(({ key, value }) => { + if (key) genHeaders.push(` "${key}": "${value}",\n`) + }) + } + + if (contentType) { + genHeaders.push(` "Content-Type": "${contentType}; charset=utf-8",\n`) + requestString.push(`,\n contentType: "${contentType}; charset=utf-8"`) + } + + if (auth === "Basic Auth") { + const basic = `${httpUser}:${httpPassword}` + genHeaders.push( + ` "Authorization": "Basic ${window.btoa(unescape(encodeURIComponent(basic)))}",\n` + ) + } else if (auth === "Bearer Token" || auth === "OAuth 2.0") { + genHeaders.push(` "Authorization": "Bearer ${bearerToken}",\n`) + } + requestString.push(`,\n headers: {\n${genHeaders.join("").slice(0, -2)}\n }\n})`) + requestString.push(".then(response => {\n") + requestString.push(" console.log(response);\n") + requestString.push("})") + requestString.push(".catch(error => {\n") + requestString.push(" console.log(error);\n") + requestString.push("})\n") + return requestString.join("") + }, +}