refactorized dispatcher

This commit is contained in:
srgooglo 2021-11-15 09:01:20 +01:00
parent 9f7e05f7d1
commit 2b55d1aeff

View File

@ -75,30 +75,43 @@ class Bridge {
} }
function generateDispatcher(bridge, method, route, getContext) { function generateDispatcher(bridge, method, route, getContext) {
return async function (body, query, options) { return function (body, query, options) {
let obj = Object() return new Promise((resolve, reject) => {
let opt = { let requestParams = {
parseData: true, parseData: true,
method: method, ...options,
url: route, method: method,
data: body, url: route,
params: query, data: body,
...options params: query,
} }
if (typeof getContext === "function") { if (typeof getContext === "function") {
opt = { ...opt, ...getContext() } requestParams = { ...requestParams, ...getContext() }
} }
const req = await bridge.instance(opt) let result = []
if (opt.parseData) { bridge.instance(requestParams)
obj = req.data .then((response) => {
} else { if (response.status > 400) {
obj = req throw new Error(response.data.error ?? response.data)
} }
})
return obj .catch((response) => {
result[0] = response
})
.then((response) => {
if (requestParams.parseData) {
result[1] = response.data
} else {
result[1] = response
}
})
.finally(() => {
return resolve(...result)
})
})
} }
} }