From 438640d5b88af17e7eab548f15c90f2be544ba93 Mon Sep 17 00:00:00 2001 From: Shalika Singhal Date: Sun, 25 Oct 2020 23:07:28 +0530 Subject: [PATCH 1/3] added codegen for java OK Http Client (#1300) * added codegen for java OK Http Client * shalika- added snapshot test for -codegen- java -ok http client * shalika- moving JavaOkHttpClientCodegen in alphabetical order in codegen --- .../__snapshots__/codegen.spec.js.snap | 54 ++++++++++++++++ helpers/codegen/codegen.js | 2 + .../codegen/generators/java-ok-http-client.js | 64 +++++++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 helpers/codegen/generators/java-ok-http-client.js diff --git a/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap b/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap index 6bb4d55b1..f84761c55 100644 --- a/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap +++ b/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap @@ -182,6 +182,60 @@ if err != nil { " `; +exports[`generate request for Java OkHTTP Client generate GET request 1`] = ` +"OkHttpClient client = new OkHttpClient().newBuilder().build(); +Request request = new Request.Builder() +.url(\\"https://httpbin.org/path/to?a=b\\") +.method(\\"GET\\", null) +.addHeader(\\"authorization\\", \\"Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk\\") + +.addHeader(\\"h1\\", \\"h1v\\") +.addHeader(\\"h2\\", \\"h2v\\") +.build(); +Response response = client.newCall(request).execute();" +`; + +exports[`generate request for Java OkHTTP Client generate POST request for JSON 1`] = ` +"OkHttpClient client = new OkHttpClient().newBuilder().build(); +MediaType mediaType = MediaType.parse(\\"application/json\\"); +RequestBody body = RequestBody.create(mediaType,\\"{\\\\\\"foo\\\\\\": \\\\\\"bar\\\\\\", \\\\\\"baz\\\\\\": \\\\\\"qux\\\\\\"}\\"); +Request request = new Request.Builder() +.url(\\"https://httpbin.org/path/to?a=b\\") +.method(\\"POST\\", body) +.addHeader(\\"authorization\\", \\"Bearer abcdefghijklmn\\" ) + +.addHeader(\\"h1\\", \\"h1v\\") +.addHeader(\\"h2\\", \\"h2v\\") +.build(); +Response response = client.newCall(request).execute();" +`; + +exports[`generate request for Java OkHTTP Client generate POST request for XML 1`] = ` +"OkHttpClient client = new OkHttpClient().newBuilder().build(); +MediaType mediaType = MediaType.parse(\\"application/xml\\"); +RequestBody body = RequestBody.create(mediaType,\\"\\\\n\\\\n \\\\n\\"); +Request request = new Request.Builder() +.url(\\"https://httpbin.org/path/to?a=b\\") +.method(\\"POST\\", body) +.addHeader(\\"authorization\\", \\"Bearer abcdefghijklmn\\" ) + +.addHeader(\\"h1\\", \\"h1v\\") +.addHeader(\\"h2\\", \\"h2v\\") +.build(); +Response response = client.newCall(request).execute();" +`; + +exports[`generate request for Java OkHTTP Client generate PUT request for www-form-urlencoded 1`] = ` +"OkHttpClient client = new OkHttpClient().newBuilder().build(); +MediaType mediaType = MediaType.parse(\\"application/x-www-form-urlencoded\\"); +RequestBody body = RequestBody.create(mediaType,\\"foo=bar&baz=qux\\"); +Request request = new Request.Builder() +.url(\\"https://httpbin.org/path/to?a=b\\") +.method(\\"PUT\\", body) +.build(); +Response response = client.newCall(request).execute();" +`; + 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 fce8ae969..9c0acbb0c 100644 --- a/helpers/codegen/codegen.js +++ b/helpers/codegen/codegen.js @@ -15,6 +15,7 @@ import { CsRestSharpCodegen } from "./generators/cs-restsharp" 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" /* Register code generators here. * A code generator is defined as an object with the following structure. @@ -28,6 +29,7 @@ export const codegens = [ CurlCodegen, CsRestSharpCodegen, GoNativeCodegen, + JavaOkHttpClientCodegen, JSAxiosCodegen, JSFetchCodegen, JSjQueryCodegen, diff --git a/helpers/codegen/generators/java-ok-http-client.js b/helpers/codegen/generators/java-ok-http-client.js new file mode 100644 index 000000000..ac62868f6 --- /dev/null +++ b/helpers/codegen/generators/java-ok-http-client.js @@ -0,0 +1,64 @@ +export const JavaOkHttpClientCodegen = { + id: "Java OkHTTP Client", + name: "Java OkHTTP Client", + generator: ({ + auth, + httpUser, + httpPassword, + method, + url, + pathName, + queryString, + bearerToken, + headers, + rawInput, + rawParams, + rawRequestBody, + contentType, + }) => { + const requestString = [] + + requestString.push("OkHttpClient client = new OkHttpClient().newBuilder().build();") + + if (["POST", "PUT", "PATCH", "DELETE"].includes(method)) { + let requestBody = rawInput ? rawParams : rawRequestBody + + if (contentType.includes("x-www-form-urlencoded")) { + requestBody = `"${requestBody}"` + } else requestBody = JSON.stringify(requestBody) + + requestString.push(`MediaType mediaType = MediaType.parse("${contentType}");`) + requestString.push(`RequestBody body = RequestBody.create(mediaType,${requestBody});`) + } + + requestString.push("Request request = new Request.Builder()") + requestString.push(`.url(\"${url}${pathName}${queryString}\")`) + + if (["POST", "PUT", "PATCH", "DELETE"].includes(method)) { + requestString.push(`.method(\"${method}\", body)`) + } else { + requestString.push(`.method(\"${method}\", null)`) + } + + if (auth === "Basic Auth") { + const basic = `${httpUser}:${httpPassword}` + requestString.push( + `.addHeader("authorization", "Basic ${window.btoa( + unescape(encodeURIComponent(basic)) + )}") \n` + ) + } else if (auth === "Bearer Token" || auth === "OAuth 2.0") { + requestString.push(`.addHeader("authorization", "Bearer ${bearerToken}" ) \n`) + } + + if (headers) { + headers.forEach(({ key, value }) => { + if (key) requestString.push(`.addHeader(\"${key}\", \"${value}\")`) + }) + } + + requestString.push(`.build();`) + requestString.push("Response response = client.newCall(request).execute();") + return requestString.join("\n") + }, +} From f9ae242792e415841f11b6eea8a01bbdaf9aa3c7 Mon Sep 17 00:00:00 2001 From: Kunal Kumar Date: Mon, 26 Oct 2020 00:00:36 +0530 Subject: [PATCH 2/3] 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("") + }, +} From dc98ef8b57f66c8650ae12632d8ec186a2ca19c7 Mon Sep 17 00:00:00 2001 From: Andrew Bastin Date: Sun, 25 Oct 2020 21:14:59 -0400 Subject: [PATCH 3/3] Fix add folder to collections being broken when logged in (#1299) * Moved add folder modal logic out * Pass around folder paths for collections to fix folder not applying on logged in users * Remove unwanted use of folder value for addFolder store mutation Co-authored-by: Liyas Thomas --- components/collections/add-folder.vue | 17 +++++------------ components/collections/collection.vue | 3 ++- components/collections/folder.vue | 8 +++++++- components/collections/index.vue | 20 ++++++++++++++++---- store/postwoman.js | 11 +++++++++-- 5 files changed, 39 insertions(+), 20 deletions(-) diff --git a/components/collections/add-folder.vue b/components/collections/add-folder.vue index 588239074..421475efa 100644 --- a/components/collections/add-folder.vue +++ b/components/collections/add-folder.vue @@ -53,6 +53,7 @@ export default { props: { show: Boolean, folder: Object, + folderPath: String, collectionIndex: Number, }, data() { @@ -61,20 +62,12 @@ export default { } }, methods: { - syncCollections() { - if (fb.currentUser !== null) { - if (fb.currentSettings[0].value) { - fb.writeCollections(JSON.parse(JSON.stringify(this.$store.state.postwoman.collections))) - } - } - }, addFolder() { - this.$store.commit("postwoman/addFolder", { - name: this.$data.name, - folder: this.$props.folder, + this.$emit("add-folder", { + name: this.name, + folder: this.folder, + path: this.folderPath || `${this.collectionIndex}`, }) - this.hideModal() - this.syncCollections() }, hideModal() { this.$emit("hide-modal") diff --git a/components/collections/collection.vue b/components/collections/collection.vue index b1912bd3a..6ec10f47a 100644 --- a/components/collections/collection.vue +++ b/components/collections/collection.vue @@ -32,7 +32,7 @@