UNPKG

glitter-sdk-js

Version:

A light client which talks to your Glitter over Http

43 lines (39 loc) 1.22 kB
const axios = require('axios') const { getServerNode } = require('./utils') function ajax(method, path, params, opts, cacheUrl = []) { const pathArr = path.split('/v1') if (pathArr.length === 2) { cacheUrl.push(pathArr[0]) } const p = axios({ method, url: path, ...params, ...opts }) return p .then((res) => { const { errno = 0, data } = res if (errno === 0 || errno === '0') { return Promise.resolve(data) } else { if (cacheUrl.length < 6 && pathArr.length === 2) { const backUpUrl = getServerNode(cacheUrl) + '/v1' + pathArr[1] return ajax(method, backUpUrl, params, opts, cacheUrl) } else { return Promise.reject(res) } } }) .catch((res) => { if (cacheUrl.length < 6 && pathArr.length === 2) { const backUpUrl = getServerNode(cacheUrl) + '/v1' + pathArr[1] return ajax(method, backUpUrl, params, opts, cacheUrl) } else { return Promise.reject(res) } }) } module.exports = { get (path, params = {}, opts = {}) { return ajax('get', path, { params }, opts) }, post (path, data = {}, opts = {}) { return ajax('post', path, { data }, opts) } }