CHALOPIN Clément 4 лет назад
Родитель
Сommit
f9c45d95e1
2 измененных файлов с 55 добавлено и 1 удалено
  1. 2 1
      helpers/codegen/codegen.js
  2. 53 0
      helpers/codegen/generators/js-axios.js

+ 2 - 1
helpers/codegen/codegen.js

@@ -1,6 +1,7 @@
 import { JSXHRCodegen } from "./generators/js-xhr"
 import { JSFetchCodegen } from "./generators/js-fetch"
 import { CurlCodegen } from "./generators/curl"
+import { JSAxiosCodegen } from "./generators/js-axios"
 
 /* Register code generators here.
  * A code generator is defined as an object with the following structure.
@@ -10,7 +11,7 @@ import { CurlCodegen } from "./generators/curl"
  * generator: (ctx) => string
  *
  */
-export const codegens = [JSXHRCodegen, JSFetchCodegen, CurlCodegen]
+export const codegens = [JSXHRCodegen, JSFetchCodegen, CurlCodegen, JSAxiosCodegen]
 
 export function generateCodeWithGenerator(codegenID, context) {
   if (codegenID) {

+ 53 - 0
helpers/codegen/generators/js-axios.js

@@ -0,0 +1,53 @@
+import { isJSONContentType } from "~/helpers/utils/contenttypes"
+
+export const JSAxiosCodegen = {
+  id: "js-axios",
+  name: "JavaScript Axios",
+  generator: ({
+    url,
+    pathName,
+    queryString,
+    auth,
+    httpUser,
+    httpPassword,
+    bearerToken,
+    method,
+    rawInput,
+    rawParams,
+    rawRequestBody,
+    contentType,
+    headers,
+  }) => {
+    const requestString = []
+    let genHeaders = []
+
+    requestString.push(`axios.${method.toLowerCase()}('${url}${pathName}${queryString}'`)
+    if (rawRequestBody.length !== 0) {
+      requestString.push(", ")
+    }
+    if (headers) {
+      headers.forEach(({ key, value }) => {
+        if (key) genHeaders.push(`    "${key}": "${value}",\n`)
+      })
+    }
+    if (contentType) {
+      genHeaders.push(`"Content-Type": "${contentType}; charset=utf-8",\n`)
+    }
+    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(`${rawRequestBody},{ \n headers : {${genHeaders.join("").slice(0, -2)}}\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("")
+  },
+}