123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { isJSONContentType } from "~/helpers/utils/contenttypes"
- export const JavascriptXhrCodegen = {
- id: "js-xhr",
- name: "JavaScript XHR",
- language: "javascript",
- generator: ({
- auth,
- httpUser,
- httpPassword,
- method,
- url,
- pathName,
- queryString,
- bearerToken,
- headers,
- rawInput,
- rawParams,
- rawRequestBody,
- contentType,
- }) => {
- const requestString = []
- requestString.push("const xhr = new XMLHttpRequest()")
- requestString.push(`xhr.addEventListener("readystatechange", function() {`)
- requestString.push(` if(this.readyState === 4) {`)
- requestString.push(` console.log(this.responseText)\n }\n})`)
- const user = auth === "Basic Auth" ? `'${httpUser}'` : null
- const password = auth === "Basic Auth" ? `'${httpPassword}'` : null
- requestString.push(
- `xhr.open('${method}', '${url}${pathName}?${queryString}', true, ${user}, ${password})`
- )
- if (auth === "Bearer Token" || auth === "OAuth 2.0") {
- requestString.push(
- `xhr.setRequestHeader('Authorization', 'Bearer ${bearerToken}')`
- )
- }
- if (headers) {
- headers.forEach(({ key, value }) => {
- if (key)
- requestString.push(`xhr.setRequestHeader('${key}', '${value}')`)
- })
- }
- if (["POST", "PUT", "PATCH", "DELETE"].includes(method)) {
- let requestBody = rawInput ? rawParams : rawRequestBody
- if (contentType && requestBody) {
- if (isJSONContentType(contentType)) {
- requestBody = `JSON.stringify(${requestBody})`
- } else if (contentType.includes("x-www-form-urlencoded")) {
- requestBody = `"${requestBody}"`
- }
- }
- requestBody = requestBody || ""
- requestString.push(`xhr.send(${requestBody})`)
- } else {
- requestString.push("xhr.send()")
- }
- return requestString.join("\n")
- },
- }
|