Merge branch 'master' of https://github.com/hoppscotch/hoppscotch
This commit is contained in:
@@ -53,6 +53,7 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
show: Boolean,
|
show: Boolean,
|
||||||
folder: Object,
|
folder: Object,
|
||||||
|
folderPath: String,
|
||||||
collectionIndex: Number,
|
collectionIndex: Number,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -61,20 +62,12 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
syncCollections() {
|
|
||||||
if (fb.currentUser !== null) {
|
|
||||||
if (fb.currentSettings[0].value) {
|
|
||||||
fb.writeCollections(JSON.parse(JSON.stringify(this.$store.state.postwoman.collections)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
addFolder() {
|
addFolder() {
|
||||||
this.$store.commit("postwoman/addFolder", {
|
this.$emit("add-folder", {
|
||||||
name: this.$data.name,
|
name: this.name,
|
||||||
folder: this.$props.folder,
|
folder: this.folder,
|
||||||
|
path: this.folderPath || `${this.collectionIndex}`,
|
||||||
})
|
})
|
||||||
this.hideModal()
|
|
||||||
this.syncCollections()
|
|
||||||
},
|
},
|
||||||
hideModal() {
|
hideModal() {
|
||||||
this.$emit("hide-modal")
|
this.$emit("hide-modal")
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<button
|
<button
|
||||||
class="icon"
|
class="icon"
|
||||||
@click="$emit('add-folder', { folder: collection })"
|
@click="$emit('add-folder', { folder: collection, path: `${collectionIndex}` })"
|
||||||
v-close-popover
|
v-close-popover
|
||||||
>
|
>
|
||||||
<i class="material-icons">create_new_folder</i>
|
<i class="material-icons">create_new_folder</i>
|
||||||
@@ -66,6 +66,7 @@
|
|||||||
<folder
|
<folder
|
||||||
:folder="folder"
|
:folder="folder"
|
||||||
:folder-index="index"
|
:folder-index="index"
|
||||||
|
:folder-path="`${collectionIndex}/${index}`"
|
||||||
:collection-index="collectionIndex"
|
:collection-index="collectionIndex"
|
||||||
:doc="doc"
|
:doc="doc"
|
||||||
:isFiltered="isFiltered"
|
:isFiltered="isFiltered"
|
||||||
|
|||||||
@@ -23,7 +23,11 @@
|
|||||||
</button>
|
</button>
|
||||||
<template slot="popover">
|
<template slot="popover">
|
||||||
<div>
|
<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>
|
<i class="material-icons">create_new_folder</i>
|
||||||
<span>{{ $t("new_folder") }}</span>
|
<span>{{ $t("new_folder") }}</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -73,6 +77,7 @@
|
|||||||
:folder-index="subFolderIndex"
|
:folder-index="subFolderIndex"
|
||||||
:collection-index="collectionIndex"
|
:collection-index="collectionIndex"
|
||||||
:doc="doc"
|
:doc="doc"
|
||||||
|
:folder-path="`${folderPath}/${subFolderIndex}`"
|
||||||
@add-folder="$emit('add-folder', $event)"
|
@add-folder="$emit('add-folder', $event)"
|
||||||
@edit-folder="$emit('edit-folder', $event)"
|
@edit-folder="$emit('edit-folder', $event)"
|
||||||
@edit-request="$emit('edit-request', $event)"
|
@edit-request="$emit('edit-request', $event)"
|
||||||
@@ -94,6 +99,7 @@ export default {
|
|||||||
folder: Object,
|
folder: Object,
|
||||||
folderIndex: Number,
|
folderIndex: Number,
|
||||||
collectionIndex: Number,
|
collectionIndex: Number,
|
||||||
|
folderPath: String,
|
||||||
doc: Boolean,
|
doc: Boolean,
|
||||||
isFiltered: Boolean,
|
isFiltered: Boolean,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ TODO:
|
|||||||
<add-folder
|
<add-folder
|
||||||
:show="showModalAddFolder"
|
:show="showModalAddFolder"
|
||||||
:folder="editingFolder"
|
:folder="editingFolder"
|
||||||
|
:folder-path="editingFolderPath"
|
||||||
|
@add-folder="onAddFolder($event)"
|
||||||
@hide-modal="displayModalAddFolder(false)"
|
@hide-modal="displayModalAddFolder(false)"
|
||||||
/>
|
/>
|
||||||
<edit-folder
|
<edit-folder
|
||||||
@@ -121,6 +123,7 @@ export default {
|
|||||||
editingFolder: undefined,
|
editingFolder: undefined,
|
||||||
editingFolderName: undefined,
|
editingFolderName: undefined,
|
||||||
editingFolderIndex: undefined,
|
editingFolderIndex: undefined,
|
||||||
|
editingFolderPath: undefined,
|
||||||
editingRequest: undefined,
|
editingRequest: undefined,
|
||||||
editingRequestIndex: undefined,
|
editingRequestIndex: undefined,
|
||||||
filterText: "",
|
filterText: "",
|
||||||
@@ -213,12 +216,21 @@ export default {
|
|||||||
this.displayModalEdit(true)
|
this.displayModalEdit(true)
|
||||||
this.syncCollections()
|
this.syncCollections()
|
||||||
},
|
},
|
||||||
addFolder(payload) {
|
onAddFolder({ name, path }) {
|
||||||
const { folder } = payload
|
this.$store.commit("postwoman/addFolder", {
|
||||||
this.$data.editingFolder = folder
|
name,
|
||||||
this.displayModalAddFolder(true)
|
path,
|
||||||
|
})
|
||||||
|
|
||||||
|
this.displayModalAddFolder(false)
|
||||||
this.syncCollections()
|
this.syncCollections()
|
||||||
},
|
},
|
||||||
|
addFolder(payload) {
|
||||||
|
const { folder, path } = payload
|
||||||
|
this.$data.editingFolder = folder
|
||||||
|
this.$data.editingFolderPath = path
|
||||||
|
this.displayModalAddFolder(true)
|
||||||
|
},
|
||||||
editFolder(payload) {
|
editFolder(payload) {
|
||||||
const { collectionIndex, folder, folderIndex } = payload
|
const { collectionIndex, folder, folderIndex } = payload
|
||||||
this.$data.editingCollectionIndex = collectionIndex
|
this.$data.editingCollectionIndex = collectionIndex
|
||||||
|
|||||||
@@ -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`] = `
|
exports[`generate request for JavaScript Axios generate GET request 1`] = `
|
||||||
"axios.get('https://httpbin.org/path/to?a=b',{
|
"axios.get('https://httpbin.org/path/to?a=b',{
|
||||||
headers : { \\"h1\\": \\"h1v\\",
|
headers : { \\"h1\\": \\"h1v\\",
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ import { CsRestSharpCodegen } from "./generators/cs-restsharp"
|
|||||||
import { RubyNetHttpCodeGen } from "./generators/ruby-net-http"
|
import { RubyNetHttpCodeGen } from "./generators/ruby-net-http"
|
||||||
import { SalesforceApexCodegen } from "./generators/salesforce-apex"
|
import { SalesforceApexCodegen } from "./generators/salesforce-apex"
|
||||||
import { ShellHTTPie } from "./generators/shell-httpie"
|
import { ShellHTTPie } from "./generators/shell-httpie"
|
||||||
|
import { JavaOkHttpClientCodegen } from "./generators/java-ok-http-client"
|
||||||
|
import { JavaUnirestCodegen } from "./generators/java-unirest"
|
||||||
/* Register code generators here.
|
/* Register code generators here.
|
||||||
* A code generator is defined as an object with the following structure.
|
* A code generator is defined as an object with the following structure.
|
||||||
*
|
*
|
||||||
@@ -28,6 +29,8 @@ export const codegens = [
|
|||||||
CurlCodegen,
|
CurlCodegen,
|
||||||
CsRestSharpCodegen,
|
CsRestSharpCodegen,
|
||||||
GoNativeCodegen,
|
GoNativeCodegen,
|
||||||
|
JavaOkHttpClientCodegen,
|
||||||
|
JavaUnirestCodegen,
|
||||||
JSAxiosCodegen,
|
JSAxiosCodegen,
|
||||||
JSFetchCodegen,
|
JSFetchCodegen,
|
||||||
JSjQueryCodegen,
|
JSjQueryCodegen,
|
||||||
|
|||||||
64
helpers/codegen/generators/java-ok-http-client.js
Normal file
64
helpers/codegen/generators/java-ok-http-client.js
Normal 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")
|
||||||
|
},
|
||||||
|
}
|
||||||
71
helpers/codegen/generators/java-unirest.js
Normal file
71
helpers/codegen/generators/java-unirest.js
Normal 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("")
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -206,14 +206,21 @@ export const mutations = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
addFolder({ collections }, payload) {
|
addFolder({ collections }, payload) {
|
||||||
const { name, folder } = payload
|
const { name, path } = payload
|
||||||
|
|
||||||
const newFolder = {
|
const newFolder = {
|
||||||
name: name,
|
name: name,
|
||||||
requests: [],
|
requests: [],
|
||||||
folders: [],
|
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) {
|
editFolder({ collections }, payload) {
|
||||||
|
|||||||
Reference in New Issue
Block a user