feat: request/response interceptors for remote config fetch (#4484)
This commit is contained in:
34
src/core/plugins/configs/spec-actions.js
Normal file
34
src/core/plugins/configs/spec-actions.js
Normal file
@@ -0,0 +1,34 @@
|
||||
import { parseYamlConfig } from "./helpers"
|
||||
|
||||
export const downloadConfig = (url) => ({fn: { fetch }, getConfigs}) => {
|
||||
const { requestInterceptor, responseInterceptor } = getConfigs()
|
||||
let req = { url }
|
||||
if(requestInterceptor) {
|
||||
req = requestInterceptor(req)
|
||||
}
|
||||
return fetch(req)
|
||||
.then(res => {
|
||||
if(res) {
|
||||
return responseInterceptor(res)
|
||||
}
|
||||
return res
|
||||
})
|
||||
}
|
||||
|
||||
export const getConfigByUrl = (configUrl, cb)=> ({ specActions }) => {
|
||||
if (configUrl) {
|
||||
return specActions.downloadConfig(configUrl).then(next, next)
|
||||
}
|
||||
|
||||
function next(res) {
|
||||
if (res instanceof Error || res.status >= 400) {
|
||||
specActions.updateLoadingStatus("failedConfig")
|
||||
specActions.updateLoadingStatus("failedConfig")
|
||||
specActions.updateUrl("")
|
||||
console.error(res.statusText + " " + configUrl)
|
||||
cb(null)
|
||||
} else {
|
||||
cb(parseYamlConfig(res.text))
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user