diff --git a/dev/common/helper.js b/dev/common/helper.js index 07fd5c1..7b9c277 100644 --- a/dev/common/helper.js +++ b/dev/common/helper.js @@ -6,6 +6,8 @@ module.exports = { isFunction: val => Object.prototype.toString.call(val) === '[object Function]', + defaultFunction: () => {}, + pathJoin: (...paths) => { const pathArray = Array.prototype.slice.call(paths); let resultPath = ''; diff --git a/dev/main.js b/dev/main.js index 1aae4c9..3a091c7 100644 --- a/dev/main.js +++ b/dev/main.js @@ -82,13 +82,35 @@ const settings = { ); } }, + setTimeout: duration => { + _settings.timeout = duration; + }, setHeader: _settings.setHeader, - set beforeEveryRequest(func = () => {}) { + set beforeEveryRequest(func = helper.defaultFunction) { _settings.beforeEveryRequest = func; }, - set afterEveryRequest(func = () => {}) { + set afterEveryRequest(func = helper.defaultFunction) { _settings.afterEveryRequest = func; }, + set: (configs = {}) => { + configs.endpoints && settings.addEndpoint(configs.endpoints); + configs.apiPaths && settings.addApiPath(configs.apiPaths); + configs.defaultEndpoint && + settings.setDefaultEndpoint(configs.defaultEndpoint); + configs.defaultApiPath && + settings.setDefaultApiPath(configs.defaultApiPath); + configs.timeout && settings.setTimeout(configs.timeout); + helper.isObject(configs.headers) && + Object.entries(configs.headers).map(config => + settings.setHeader(config[0], config[1]) + ); + if (configs.beforeEveryRequest) { + settings.beforeEveryRequest = beforeEveryRequest; + } + if (configs.afterEveryRequest) { + settings.afterEveryRequest = afterEveryRequest; + } + }, }; export { RestClient, RestBaseModel, settings }; diff --git a/dev/modules/settings.js b/dev/modules/settings.js index af0d940..0ee7ffe 100644 --- a/dev/modules/settings.js +++ b/dev/modules/settings.js @@ -1,4 +1,5 @@ const settings = { + timeout: 0, endpoints: {}, defaultEndpoint: '', apiPaths: { diff --git a/dev/modules/xhr.js b/dev/modules/xhr.js index ac5547f..cd3e795 100644 --- a/dev/modules/xhr.js +++ b/dev/modules/xhr.js @@ -7,6 +7,7 @@ const isValid = value => { class XHR { constructor() { this.xhr = new XMLHttpRequest(); + this.xhr.timeout = settings.timeout; this.method = 'GET'; this.async = true; this.url = '';