platypush/platypush/backend/http/webapp/src/utils/Api.vue

61 lines
1.4 KiB
Vue
Raw Normal View History

2020-11-21 01:12:08 +01:00
<script>
import axios from 'axios'
export default {
name: "Api",
methods: {
execute(request, timeout=60000, showError=true) {
2020-11-21 01:12:08 +01:00
const opts = {};
if (!('target' in request) || !request['target']) {
request['target'] = 'localhost'
}
if (!('type' in request) || !request['type']) {
request['type'] = 'request'
}
if (timeout) {
opts.timeout = timeout
}
return new Promise((resolve, reject) => {
axios.post('/execute', request, opts)
.then((response) => {
response = response.data.response
2020-12-03 00:59:35 +01:00
if (!response.errors?.length) {
2020-11-21 01:12:08 +01:00
resolve(response.output);
} else {
2020-12-03 00:59:35 +01:00
const error = response.errors?.[0] || response
2020-11-21 01:12:08 +01:00
this.notify({
text: error,
error: true,
})
reject(error)
}
})
.catch((error) => {
if (showError)
this.notify({
text: error,
error: true,
})
2020-11-21 01:12:08 +01:00
reject(error)
})
})
},
request(action, args={}, timeout=60000, showError=true) {
2020-11-21 01:12:08 +01:00
return this.execute({
type: 'request',
action: action,
args: args,
}, timeout, showError);
2020-11-21 01:12:08 +01:00
}
},
}
</script>