tplus-api
Version:
tplus api invoke
126 lines (110 loc) • 4.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _findIndex2 = require('lodash/findIndex');
var _findIndex3 = _interopRequireDefault(_findIndex2);
var _User = require('../model/User');
var _User2 = _interopRequireDefault(_User);
var _app = require('../const/app');
var _mutantsMicrofx = require('mutants-microfx');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var crypto = require('crypto');
var constant = _mutantsMicrofx.env.constant,
platform = _mutantsMicrofx.env.platform,
browser = _mutantsMicrofx.env.browser,
os = _mutantsMicrofx.env.os;
function getAppCloudAuthInfo(orgId) {
var user = _User2.default.restore();
if (!user) {
return '';
}
var params = {
appKey: atob(_app.cspAk),
orgId: orgId ? orgId : user.orgId,
userUid: user.userId
};
var params_string = (0, _stringify2.default)(params);
var hash = crypto.createHash('md5').update(params_string).digest("hex");
return new Buffer(hash + ',' + params_string).toString('base64');
}
var middleware = function middleware(axios) {
axios.interceptors.request.use(function proxyRequest(cfg) {
var user = _User2.default.restore();
//使用在线的代理服务器 解决跨域问题
var proxyURL = user && user.proxyserver ? user.proxyserver : _app.prodProxyHost;
//如果调试时在启动本地代理
//_DEV_是否启用模拟数据
// if (__DEV__) {
// proxyURL = devProxyHost;
// }else{
// proxyURL = prodProxyHost;
// }
if (cfg.url.indexOf('http') == -1) {
cfg.url = "" + cfg.baseURL + cfg.url;
}
var noProxyHostIndex = (0, _findIndex3.default)(_app.noProxyHostArray, function (url) {
return cfg.url.indexOf(url) !== -1;
});
if (proxyURL && noProxyHostIndex === -1) {
if (platform == constant.platform.chanjet && window.location.protocol.indexOf('file') > -1) {
// 工作圈模式下 http转为file协议 不用使用代理
} else {
cfg.url = proxyURL + "/?url=" + cfg.url;
}
}
var tplusHostIndex = (0, _findIndex3.default)(_app.tplusHostArray, function (url) {
return cfg.baseURL.indexOf(url) !== -1;
});
if (tplusHostIndex !== -1) {
var authInfo = getAppCloudAuthInfo(cfg.data && cfg.data.targetOrgID ? cfg.data.targetOrgID : '');
cfg.headers['authInfo'] = authInfo;
}
if (user.channel && user.channel.throughProxy) {
cfg.headers['appkey'] = atob(_app.cspAk);
if (user) {
cfg.headers['userid'] = user.userId;
cfg.headers['orgid'] = user.orgId;
cfg.headers['token'] = user.accessToken;
}
}
if (cfg.headers['checkThroughProxy'] && cfg.headers['checkOrgId']) {
cfg.headers['appkey'] = atob(_app.cspAk);
if (user) {
cfg.headers['userid'] = user.userId;
cfg.headers['orgid'] = cfg.headers['checkOrgId'];
cfg.headers['token'] = user.accessToken;
}
}
//支持saas版本
if (user && user.sid && !cfg.headers['checkThroughProxy']) {
cfg.headers['tplussid'] = user.sid;
}
if (cfg.url.indexOf('/api/v2/') > 0) {
cfg.headers['openToken'] = getAppCloudAuthInfo('');
cfg.headers['appkey'] = atob(_app.cspAk);
}
delete cfg.headers['checkThroughProxy'];
delete cfg.headers['checkOrgId'];
var ciaHostIndex = (0, _findIndex3.default)(_app.ciaHostArray, function (url) {
return cfg.baseURL.indexOf(url) !== -1;
});
if (ciaHostIndex === -1 && user && user.tplusToken) {
if (!!cfg.headers['Authorization']) {
//Authorization如果有值 用调用方的值 不覆盖
} else {
cfg.headers['Authorization'] = "token " + user.tplusToken;
}
}
return cfg;
}, function promiseError(error) {
return _promise2.default.reject(error);
});
};
exports.default = middleware;
//# sourceMappingURL=request-interceptor.js.map
//# sourceMappingURL=request-interceptor.js.map