This commit is contained in:
Liyas Thomas
2020-10-28 06:42:29 +05:30
9 changed files with 272 additions and 21 deletions

View File

@@ -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")

View File

@@ -32,7 +32,7 @@
<div>
<button
class="icon"
@click="$emit('add-folder', { folder: collection })"
@click="$emit('add-folder', { folder: collection, path: `${collectionIndex}` })"
v-close-popover
>
<i class="material-icons">create_new_folder</i>
@@ -66,6 +66,7 @@
<folder
:folder="folder"
:folder-index="index"
:folder-path="`${collectionIndex}/${index}`"
:collection-index="collectionIndex"
:doc="doc"
:isFiltered="isFiltered"

View File

@@ -23,7 +23,11 @@
</button>
<template slot="popover">
<div>
<button class="icon" @click="$emit('add-folder', { folder })" v-close-popover>
<button
class="icon"
@click="$emit('add-folder', { folder, path: folderPath })"
v-close-popover
>
<i class="material-icons">create_new_folder</i>
<span>{{ $t("new_folder") }}</span>
</button>
@@ -73,6 +77,7 @@
:folder-index="subFolderIndex"
:collection-index="collectionIndex"
:doc="doc"
:folder-path="`${folderPath}/${subFolderIndex}`"
@add-folder="$emit('add-folder', $event)"
@edit-folder="$emit('edit-folder', $event)"
@edit-request="$emit('edit-request', $event)"
@@ -94,6 +99,7 @@ export default {
folder: Object,
folderIndex: Number,
collectionIndex: Number,
folderPath: String,
doc: Boolean,
isFiltered: Boolean,
},

View File

@@ -21,6 +21,8 @@ TODO:
<add-folder
:show="showModalAddFolder"
:folder="editingFolder"
:folder-path="editingFolderPath"
@add-folder="onAddFolder($event)"
@hide-modal="displayModalAddFolder(false)"
/>
<edit-folder
@@ -121,6 +123,7 @@ export default {
editingFolder: undefined,
editingFolderName: undefined,
editingFolderIndex: undefined,
editingFolderPath: undefined,
editingRequest: undefined,
editingRequestIndex: undefined,
filterText: "",
@@ -213,12 +216,21 @@ export default {
this.displayModalEdit(true)
this.syncCollections()
},
addFolder(payload) {
const { folder } = payload
this.$data.editingFolder = folder
this.displayModalAddFolder(true)
onAddFolder({ name, path }) {
this.$store.commit("postwoman/addFolder", {
name,
path,
})
this.displayModalAddFolder(false)
this.syncCollections()
},
addFolder(payload) {
const { folder, path } = payload
this.$data.editingFolder = folder
this.$data.editingFolderPath = path
this.displayModalAddFolder(true)
},
editFolder(payload) {
const { collectionIndex, folder, folderIndex } = payload
this.$data.editingCollectionIndex = collectionIndex

View File

@@ -182,6 +182,100 @@ 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,\\"<?xml version='1.0' encoding='utf-8'?>\\\\n<xml>\\\\n <element foo=\\\\\\"bar\\\\\\"></element>\\\\n</xml>\\");
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 Java Unirest generate GET request 1`] = `
"HttpResponse<String> 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<String> 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<String> 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(\\"<?xml version='1.0' encoding='utf-8'?>\\\\n<xml>\\\\n <element foo=\\\\\\"bar\\\\\\"></element>\\\\n</xml>\\")
.asString();
"
`;
exports[`generate request for Java Unirest generate PUT request for www-form-urlencoded 1`] = `
"HttpResponse<String> 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\\",

View File

@@ -15,7 +15,8 @@ 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"
import { JavaUnirestCodegen } from "./generators/java-unirest"
/* Register code generators here.
* A code generator is defined as an object with the following structure.
*
@@ -28,6 +29,8 @@ export const codegens = [
CurlCodegen,
CsRestSharpCodegen,
GoNativeCodegen,
JavaOkHttpClientCodegen,
JavaUnirestCodegen,
JSAxiosCodegen,
JSFetchCodegen,
JSjQueryCodegen,

View File

@@ -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")
},
}

View File

@@ -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<String> 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("")
},
}

View File

@@ -206,14 +206,21 @@ export const mutations = {
},
addFolder({ collections }, payload) {
const { name, folder } = payload
const { name, path } = payload
const newFolder = {
name: name,
requests: [],
folders: [],
}
folder.folders.push(newFolder)
// Walk from collections to destination with the path
const indexPaths = path.split("/").map((x) => parseInt(x))
let target = collections[indexPaths.shift()]
while (indexPaths.length > 0) target = target.folders[indexPaths.shift()]
target.folders.push(newFolder)
},
editFolder({ collections }, payload) {