add vuex-persist

This commit is contained in:
breno-pereira
2019-10-24 20:28:08 -03:00
parent 1b9db42114
commit 36ec17a06c
4 changed files with 219 additions and 47 deletions

View File

@@ -103,10 +103,24 @@
</ul> </ul>
<ul v-for="(param, index) in bodyParams" :key="index"> <ul v-for="(param, index) in bodyParams" :key="index">
<li> <li>
<input :placeholder="'key '+(index+1)" :name="'bparam'+index" v-model="param.key" @keyup.prevent="setRouteQueryState" autofocus> <input
:placeholder="'key '+(index+1)"
:name="'bparam'+index"
:value="param.key"
@change="$store.commit('setKeyBodyParams', { index, value: $event.target.value })"
@keyup.prevent="setRouteQueryState"
autofocus
>
</li> </li>
<li> <li>
<input :placeholder="'value '+(index+1)" :id="'bvalue'+index" :name="'bvalue'+index" v-model="param.value" @keyup.prevent="setRouteQueryState"> <input
:placeholder="'value '+(index+1)"
:id="'bvalue'+index"
:name="'bvalue'+index"
:value="param.value"
@change="$store.commit('setValueBodyParams', { index, value: $event.target.value })"
@keyup.prevent="setRouteQueryState"
>
</li> </li>
<div> <div>
<li> <li>
@@ -284,10 +298,23 @@
</ul> </ul>
<ul v-for="(header, index) in headers" :key="index"> <ul v-for="(header, index) in headers" :key="index">
<li> <li>
<input :placeholder="'header '+(index+1)" :name="'header'+index" v-model="header.key" @keyup.prevent="setRouteQueryState" autofocus> <input
:placeholder="'header '+(index+1)"
:name="'header'+index"
:value="header.key"
@change="$store.commit('setKeyHeader', { index, value: $event.target.value })"
@keyup.prevent="setRouteQueryState"
autofocus
>
</li> </li>
<li> <li>
<input :placeholder="'value '+(index+1)" :name="'value'+index" v-model="header.value" @keyup.prevent="setRouteQueryState"> <input
:placeholder="'value '+(index+1)"
:name="'value'+index"
:value="header.value"
@change="$store.commit('setValueHeader', { index, value: $event.target.value })"
@keyup.prevent="setRouteQueryState"
>
</li> </li>
<div> <div>
<li> <li>
@@ -327,10 +354,21 @@
</ul> </ul>
<ul v-for="(param, index) in params" :key="index"> <ul v-for="(param, index) in params" :key="index">
<li> <li>
<input :placeholder="'parameter '+(index+1)" :name="'param'+index" v-model="param.key" autofocus> <input
:placeholder="'parameter '+(index+1)"
:name="'param'+index"
:value="param.key"
@change="$store.commit('setKeyParams', { index, value: $event.target.value })"
autofocus
>
</li> </li>
<li> <li>
<input :placeholder="'value '+(index+1)" :name="'value'+index" v-model="param.value"> <input
:placeholder="'value '+(index+1)"
:name="'value'+index"
:value="param.value"
@change="$store.commit('setValueParams', { index, value: $event.target.value })"
>
</li> </li>
<div> <div>
<li> <li>
@@ -428,25 +466,9 @@
}, },
data() { data() {
return { return {
label: '',
showModal: false, showModal: false,
copyButton: '<i class="material-icons">file_copy</i>', copyButton: '<i class="material-icons">file_copy</i>',
copiedButton: '<i class="material-icons">done</i>', copiedButton: '<i class="material-icons">done</i>',
method: 'GET',
url: 'https://reqres.in',
auth: 'None',
path: '/api/users',
httpUser: '',
httpPassword: '',
passwordFieldType: 'password',
bearerToken: '',
headers: [],
params: [],
bodyParams: [],
rawParams: '',
rawInput: false,
contentType: 'application/json',
requestType: 'JavaScript XHR',
isHidden: true, isHidden: true,
response: { response: {
status: '', status: '',
@@ -533,6 +555,70 @@
} }
}, },
computed: { computed: {
url: {
get() { return this.$store.state.request.url; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'url' }) },
},
method: {
get() { return this.$store.state.request.method; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'method' }) },
},
path: {
get() { return this.$store.state.request.path; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'path' }) },
},
label: {
get() { return this.$store.state.request.label; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'label' }) },
},
auth: {
get() { return this.$store.state.request.auth; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'auth' }) },
},
httpUser: {
get() { return this.$store.state.request.httpUser; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'httpUser' }) },
},
httpPassword: {
get() { return this.$store.state.request.httpPassword; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'httpPassword' }) },
},
bearerToken: {
get() { return this.$store.state.request.bearerToken; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'bearerToken' }) },
},
headers: {
get() { return this.$store.state.request.headers; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'headers' }) },
},
params: {
get() { return this.$store.state.request.params; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'params' }) },
},
bodyParams: {
get() { return this.$store.state.request.bodyParams; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'bodyParams' }) },
},
rawParams: {
get() { return this.$store.state.request.rawParams; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'rawParams' }) },
},
rawInput: {
get() { return this.$store.state.request.rawInput; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'rawInput' }) },
},
requestType: {
get() { return this.$store.state.request.requestType; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'requestType' }) },
},
contentType: {
get() { return this.$store.state.request.contentType; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'contentType' }) },
},
passwordFieldType: {
get() { return this.$store.state.request.passwordFieldType; },
set(value) { this.$store.commit('setState', { value, 'attribute': 'passwordFieldType' })}
},
requestName() { requestName() {
return this.label return this.label
}, },
@@ -635,19 +721,19 @@
requestString.push(' method: "' + this.method + '",\n') requestString.push(' method: "' + this.method + '",\n')
if (this.auth === 'Basic') { if (this.auth === 'Basic') {
var basic = this.httpUser + ':' + this.httpPassword; var basic = this.httpUser + ':' + this.httpPassword;
headers.push(' "Authorization": "Basic ' + window.btoa(unescape(encodeURIComponent(basic))) + ',\n') this.$store.commit('addHeaders', ' "Authorization": "Basic ' + window.btoa(unescape(encodeURIComponent(basic))) + ',\n')
} else if (this.auth === 'Bearer Token') { } else if (this.auth === 'Bearer Token') {
headers.push(' "Authorization": "Bearer Token ' + this.bearerToken + ',\n') this.$store.commit('addHeaders', ' "Authorization": "Bearer Token ' + this.bearerToken + ',\n')
} }
if (['POST', 'PUT', 'PATCH'].includes(this.method)) { if (['POST', 'PUT', 'PATCH'].includes(this.method)) {
const requestBody = this.rawInput ? this.rawParams : this.rawRequestBody; const requestBody = this.rawInput ? this.rawParams : this.rawRequestBody;
requestString.push(' body: ' + requestBody + ',\n') requestString.push(' body: ' + requestBody + ',\n')
headers.push(' "Content-Length": ' + requestBody.length + ',\n') this.$store.commit('addHeaders', ' "Content-Length": ' + requestBody.length + ',\n')
headers.push(' "Content-Type": "' + this.contentType + '; charset=utf-8",\n') this.$store.commit('addHeaders', ' "Content-Type": "' + this.contentType + '; charset=utf-8",\n')
} }
if (this.headers) { if (this.headers) {
this.headers.forEach(function (element) { this.headers.forEach(function (element) {
headers.push(' "' + element.key + '": "' + element.value + '",\n'); this.$store.commit('addHeaders', ' "' + element.key + '": "' + element.value + '",\n')
}) })
} }
headers = headers.join('').slice(0, -3); headers = headers.join('').slice(0, -3);
@@ -688,7 +774,7 @@
return requestString.join('').slice(0, -3); return requestString.join('').slice(0, -3);
} }
} }
}, },
methods: { methods: {
handleUseHistory({ handleUseHistory({
label, label,
@@ -883,40 +969,36 @@
this.params = params; this.params = params;
}, },
addRequestHeader() { addRequestHeader() {
this.headers.push({ this.$store.commit('addHeaders', {
key: '', key: '',
value: '' value: ''
}); })
return false return false
}, },
removeRequestHeader(index) { removeRequestHeader(index) {
this.headers.splice(index, 1) this.$store.commit('removeHeaders', index)
this.$toast.error('Deleted', { this.$toast.error('Deleted', {
icon: 'delete' icon: 'delete'
}); });
}, },
addRequestParam() { addRequestParam() {
this.params.push({ this.$store.commit('addParams', { key: '', value: '' })
key: '',
value: ''
})
return false return false
}, },
removeRequestParam(index) { removeRequestParam(index) {
this.params.splice(index, 1) this.$store.commit('removeParams', index)
this.$toast.error('Deleted', { this.$toast.error('Deleted', {
icon: 'delete' icon: 'delete'
}); });
}, },
addRequestBodyParam() { addRequestBodyParam() {
this.bodyParams.push({ this.$store.commit('addBodyParams', { key: '', value: '' })
key: '',
value: ''
})
return false return false
}, },
removeRequestBodyParam(index) { removeRequestBodyParam(index) {
this.bodyParams.splice(index, 1) this.$store.commit('removeBodyParams', index)
this.$toast.error('Deleted', { this.$toast.error('Deleted', {
icon: 'delete' icon: 'delete'
}); });
@@ -1066,10 +1148,7 @@
this.path = ""; this.path = "";
this.headers = []; this.headers = [];
for (const key of Object.keys(parsedCurl.headers)) { for (const key of Object.keys(parsedCurl.headers)) {
this.headers.push({ this.$store.commit('addHeaders', { key: key, value: parsedCurl.headers[key] })
key: key,
value: parsedCurl.headers[key]
})
} }
this.method = parsedCurl.method.toUpperCase(); this.method = parsedCurl.method.toUpperCase();
if (parsedCurl["data"]){ if (parsedCurl["data"]){

View File

@@ -1,3 +1,24 @@
export default { import Vuex from 'vuex';
import state from './state';
import VuexPersist from 'vuex-persist'
} export default {
install(Vue) {
Vue.use(Vuex);
const vuexLocalStorage = new VuexPersist({
key: 'vuex',
storage: window.localStorage,
reducer: ({ ...request }) => ({
...request
})
})
const store = new Vuex.Store({
state,
plugins: [vuexLocalStorage.plugin]
});
Vue.prototype.$store = store;
},
};

53
store/mutations.js Normal file
View File

@@ -0,0 +1,53 @@
export default {
setState(state, object){
state.request[object.attribute] = object.value
},
addHeaders(state, value) {
state.request.headers.push(value);
},
removeHeaders(state, index) {
state.request.headers.splice(index, 1)
},
setKeyHeader(state, object) {
state.request.headers[object.index].key = object.value
},
setValueHeader(state, object) {
state.request.headers[object.index].value = object.value
},
addParams(state, value) {
state.request.params.push(value);
},
removeParams(state, index) {
state.request.params.splice(index, 1)
},
setKeyParams(state, object) {
state.request.params[object.index].key = object.value
},
setValueParams(state, object) {
state.request.params[object.index].value = object.value
},
addBodyParams(state, value) {
state.request.bodyParams.push(value);
},
removeBodyParams(state, index) {
state.request.bodyParams.splice(index, 1)
},
setKeyBodyParams(state, object) {
state.request.bodyParams[object.index].key = object.value
},
setValueBodyParams(state, object) {
state.request.bodyParams[object.index].value = object.value
},
};

19
store/state.js Normal file
View File

@@ -0,0 +1,19 @@
export default {
request: {
method: 'GET',
url: 'https://reqres.in',
path: '/api/users',
label: '',
auth: 'None',
httpUser: '',
httpPassword: '',
bearerToken: '',
headers: [],
params: [],
bodyParams: [],
rawParams: '',
rawInput: false,
requestType: '',
contentType: '',
}
};