mirror of
https://github.com/ragestudio/linebridge.git
synced 2025-06-09 18:44:17 +00:00
refactorized dispatcher
This commit is contained in:
parent
9f7e05f7d1
commit
2b55d1aeff
@ -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)
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user