tongtong-utils
Version:
String类
291 lines (269 loc) • 11.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.loopApi = undefined;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _qs = require('qs');
var _qs2 = _interopRequireDefault(_qs);
var _axios = require('axios');
var _axios2 = _interopRequireDefault(_axios);
var _mockjs = require('mockjs');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var request = function request(api, params, apiConfig) {
return new Promise(function (resolve) {
if (!api) {
resolve({ success: false, message: '没有配置接口' });
} else {
if (window._request_params) {
params = _extends({}, window._request_params, params);
}
var prevParams = Object.clone(params);
var url = void 0;
var type = 'get';
if ((typeof api === 'undefined' ? 'undefined' : _typeof(api)) === "object") {
url = api._url;
type = api._type || 'get';
if (api._token) {
params = _extends({
token: api._token
}, params);
}
if (api._params) {
params = _extends({}, params, api._params);
}
if (api._before) {
params = api._before(params);
}
} else {
url = api;
}
var _cacheKey = url + '?' + _qs2.default.stringify(params);
var res = window.__cache.get(_cacheKey);
if ((typeof api === 'undefined' ? 'undefined' : _typeof(api)) === "object" && api._result) {
if (api._result instanceof Function) {
res = (0, _mockjs.mock)(api._result(params));
} else {
res = (0, _mockjs.mock)(api._result);
}
}
if (res) {
if ((typeof api === 'undefined' ? 'undefined' : _typeof(api)) === "object" && api._handle) {
res = api._handle(res, params, prevParams);
}
resolve(res);
return;
} else {
if (api._cacheKeys && api._cacheKeys.includes(_cacheKey)) {
api._cacheKeys.splice(api._cacheKeys.indexOf(_cacheKey), 1);
}
}
var config = {};
if (type === 'get') {
config = {
params: params,
paramsSerializer: function paramsSerializer(param) {
for (var key in param) {
var value = param[key];
if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !(value instanceof Array)) {
param[key] = JSON.stringify(value);
}
}
return _qs2.default.stringify(param, { arrayFormat: 'repeat' });
}
};
} else {
config = {
data: params,
transformRequest: [function (data) {
for (var key in data) {
var value = data[key];
if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !(value instanceof Array)) {
data[key] = JSON.stringify(value);
}
}
return _qs2.default.stringify(data, { arrayFormat: 'repeat' });
}]
};
}
if ((typeof api === 'undefined' ? 'undefined' : _typeof(api)) === "object") {
config.timeout = api._timeout;
config.silence = api._silence;
}
config = Object.assign(config, apiConfig);
_axios2.default.request(url, _extends({
method: type,
headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest' }
}, config)).then(function (res) {
if (api._cache) {
api._cacheKey = url + '?' + _qs2.default.stringify(params);
window.__cache.set(api._cacheKey, res, api._cache);
if (!api._cacheKeys) {
api._cacheKeys = [];
}
if (!api._cacheKeys.includes(api._cacheKey)) {
api._cacheKeys.push(api._cacheKey);
}
}
if (api._handle) {
res = api._handle(res, params, prevParams);
}
resolve(res && 'success' in res ? res : res && res.data ? res.data : res);
}).catch(function (err) {
resolve(_extends({ success: false, message: '', error: err }, err));
});
}
});
};
var defaultCache = '1s';
var defaultType = 'get';
window.__cache = {
get: function get(key) {
var value = this.data[key];
if (value) {
if (value.time && value.time < new Date()) {
this.remove(key);
return null;
}
return value.data;
}
return null;
},
set: function set(key, value, time) {
var t = null;
if (time && time.length >= 2) {
try {
t = new Date();
var n = parseInt(time.substring(0, time.length - 1), 10);
var f = time.substring(time.length - 1, time.length);
switch (f) {
case 's':
t.setSeconds(t.getSeconds() + n);break;
case 'm':
t.setMinutes(t.getMinutes() + n);break;
case 'h':
t.setHours(t.getHours() + n);break;
case 'd':
t.setDate(t.getDate() + n);break;
case 'w':
t.setDate(t.getDate() + n * 7);break;
case 'M':
t.setMonth(t.getMonth() + n);break;
case 'y':
t.setFullYear(t.getFullYear() + n);break;
}
t = t.getTime();
} catch (e) {
t = null;
}
}
this.data[key] = { data: value, time: t };
return true;
},
remove: function remove(keys) {
if (keys instanceof Array) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = keys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var key = _step.value;
delete this.data[key];
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
} else if (keys instanceof Object) {
if (keys._cacheKeys) {
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = keys._cacheKeys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var _key = _step2.value;
delete this.data[_key];
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
delete keys._cacheKeys;
}
} else {
delete this.data[keys];
}
},
data: {}
};
var loopApi = exports.loopApi = function loopApi(obj) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
options = Object.extend({}, options, {
defaultCache: defaultCache,
defaultType: defaultType
});
if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === "object") {
for (var key in obj) {
if (key.indexOf('_') === 0) {
continue;
}
var val = obj[key];
if (typeof val === "string") {
obj[key] = {
__url: val
};
val = obj[key];
}
if ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === "object") {
if (val.__url) {
val._url = val.__url;
} else if (!val._url) {
if (obj._url) {
val._url = obj._url + '/' + key;
} else {
val._url = key;
}
} else {
val._url = (obj._url ? obj._url + '/' : '') + val._url;
}
if (obj._token) {
val._token = obj._token;
}
if (obj._params) {
if (val._params) {
val._params = Object.extend(val._params, obj._params);
} else {
val._params = obj._params;
}
}
val._type = val._type || obj._type || options.defaultType;
val._cache = val._cache !== undefined ? val._cache : obj._cache !== undefined ? obj._cache : options.defaultCache;
if (!Object.isEmpty(val, [/^_/])) {
loopApi(val);
}
}
}
}
};
exports.default = request;