Merge branch 'master' of https://github.com/hoppscotch/hoppscotch
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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\\",
|
||||
|
||||
@@ -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,
|
||||
|
||||
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) {
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user