From f9ae242792e415841f11b6eea8a01bbdaf9aa3c7 Mon Sep 17 00:00:00 2001 From: Kunal Kumar Date: Mon, 26 Oct 2020 00:00:36 +0530 Subject: [PATCH] Kunal - java-unirest 25 oct 2020 codegen added (#1301) --- .../__snapshots__/codegen.spec.js.snap | 40 +++++++++++ helpers/codegen/codegen.js | 3 +- helpers/codegen/generators/java-unirest.js | 71 +++++++++++++++++++ 3 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 helpers/codegen/generators/java-unirest.js diff --git a/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap b/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap index f84761c55..8f5fc4b3c 100644 --- a/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap +++ b/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap @@ -236,6 +236,46 @@ Request request = new Request.Builder() Response response = client.newCall(request).execute();" `; +exports[`generate request for Java Unirest generate GET request 1`] = ` +"HttpResponse response = Unirest.get(\\"https://httpbin.org/path/to?a=b\\") +.header(\\"authorization\\", \\"Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk\\") +.header(\\"h1\\", \\"h1v\\") +.header(\\"h2\\", \\"h2v\\") + +.asString(); +" +`; + +exports[`generate request for Java Unirest generate POST request for JSON 1`] = ` +"HttpResponse response = Unirest.post(\\"https://httpbin.org/path/to?a=b\\") +.header(\\"authorization\\", \\"Bearer abcdefghijklmn\\") +.header(\\"h1\\", \\"h1v\\") +.header(\\"h2\\", \\"h2v\\") +.header(\\"Content-Type\\", \\"application/json\\") +.body(\\"{\\\\\\"foo\\\\\\": \\\\\\"bar\\\\\\", \\\\\\"baz\\\\\\": \\\\\\"qux\\\\\\"}\\") +.asString(); +" +`; + +exports[`generate request for Java Unirest generate POST request for XML 1`] = ` +"HttpResponse response = Unirest.post(\\"https://httpbin.org/path/to?a=b\\") +.header(\\"authorization\\", \\"Bearer abcdefghijklmn\\") +.header(\\"h1\\", \\"h1v\\") +.header(\\"h2\\", \\"h2v\\") +.header(\\"Content-Type\\", \\"application/xml\\") +.body(\\"\\\\n\\\\n \\\\n\\") +.asString(); +" +`; + +exports[`generate request for Java Unirest generate PUT request for www-form-urlencoded 1`] = ` +"HttpResponse response = Unirest.put(\\"https://httpbin.org/path/to?a=b\\") +.header(\\"Content-Type\\", \\"application/x-www-form-urlencoded\\") +.body(\\"foo=bar&baz=qux\\") +.asString(); +" +`; + exports[`generate request for JavaScript Axios generate GET request 1`] = ` "axios.get('https://httpbin.org/path/to?a=b',{ headers : { \\"h1\\": \\"h1v\\", diff --git a/helpers/codegen/codegen.js b/helpers/codegen/codegen.js index 9c0acbb0c..535cce2f9 100644 --- a/helpers/codegen/codegen.js +++ b/helpers/codegen/codegen.js @@ -16,7 +16,7 @@ import { RubyNetHttpCodeGen } from "./generators/ruby-net-http" import { SalesforceApexCodegen } from "./generators/salesforce-apex" import { ShellHTTPie } from "./generators/shell-httpie" import { JavaOkHttpClientCodegen } from "./generators/java-ok-http-client" - +import { JavaUnirestCodegen } from "./generators/java-unirest" /* Register code generators here. * A code generator is defined as an object with the following structure. * @@ -30,6 +30,7 @@ export const codegens = [ CsRestSharpCodegen, GoNativeCodegen, JavaOkHttpClientCodegen, + JavaUnirestCodegen, JSAxiosCodegen, JSFetchCodegen, JSjQueryCodegen, diff --git a/helpers/codegen/generators/java-unirest.js b/helpers/codegen/generators/java-unirest.js new file mode 100644 index 000000000..4756bfe53 --- /dev/null +++ b/helpers/codegen/generators/java-unirest.js @@ -0,0 +1,71 @@ +import { isJSONContentType } from "~/helpers/utils/contenttypes" + +export const JavaUnirestCodegen = { + id: "java-unirest", + name: "Java Unirest", + generator: ({ + url, + pathName, + queryString, + auth, + httpUser, + httpPassword, + bearerToken, + method, + rawInput, + rawParams, + rawRequestBody, + contentType, + headers, + }) => { + const requestString = [] + // initial request setup + let requestBody = rawInput ? rawParams : rawRequestBody + const verbs = [ + { verb: "GET", unirestMethod: "get" }, + { verb: "POST", unirestMethod: "post" }, + { verb: "PUT", unirestMethod: "put" }, + { verb: "PATCH", unirestMethod: "patch" }, + { verb: "DELETE", unirestMethod: "delete" }, + { verb: "HEAD", unirestMethod: "head" }, + { verb: "OPTIONS", unirestMethod: "options" }, + ] + // create client and request + const verb = verbs.find((v) => v.verb === method) + requestString.push(`HttpResponse response = Unirest.${verb.unirestMethod}("${url}${pathName}${queryString}")\n`) + if (auth === "Basic Auth") { + const basic = `${httpUser}:${httpPassword}` + requestString.push( + `.header("authorization", "Basic ${window.btoa( + unescape(encodeURIComponent(basic)) + )}") \n` + ) + } else if (auth === "Bearer Token" || auth === "OAuth 2.0") { + requestString.push(`.header("authorization", "Bearer ${bearerToken}") \n`) + } + // custom headers + if (headers) { + headers.forEach(({ key, value }) => { + if (key) { + requestString.push(`.header("${key}", "${value}")\n`) + } + }) + } + if (contentType) { + requestString.push(`.header("Content-Type", "${contentType}")\n`) + } + + // set body + if (["POST", "PUT", "PATCH", "DELETE"].includes(method)) { + if (contentType.includes("x-www-form-urlencoded")) { + requestBody = `"${requestBody}"` + }else + { requestBody = JSON.stringify(requestBody) + } + + requestString.push(`.body(${requestBody})`) + } + requestString.push(`\n.asString();\n`) + return requestString.join("") + }, +}