easy-api-client
Version:
开源项目服务端api框架easy-spring-boot-api的typescript客户端api对接工具包
91 lines (90 loc) • 3.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiDecryptAfterHandler = exports.ApiCheckSignAfterHandler = void 0;
var EncryptUtil_1 = require("../../utils/EncryptUtil");
var ApiCheckSignAfterHandler = /** @class */ (function () {
function ApiCheckSignAfterHandler() {
}
ApiCheckSignAfterHandler.newInstance = function () {
return new ApiCheckSignAfterHandler();
};
ApiCheckSignAfterHandler.prototype.convertToSignParams = function (signParams, key, value) {
var _this = this;
if (value instanceof Array) {
//数组
var arr = value;
arr.forEach(function (v, i) {
_this.convertToSignParams(signParams, "".concat(key, "[").concat(i, "]"), v);
});
}
else if (typeof value === 'object' && value != null) {
Object.keys(value).forEach(function (subKey) {
_this.convertToSignParams(signParams, "".concat(key, ".").concat(subKey), value[subKey]);
});
}
else {
signParams[key] = value;
}
};
ApiCheckSignAfterHandler.prototype.handle = function (api, options, response) {
var _this = this;
if (!api.needSignResult) {
return response;
}
var data = response.data.data;
if (!data) {
return response;
}
var signParams = {};
Object.keys(data).forEach(function (key) {
var value = data[key];
_this.convertToSignParams(signParams, key, value);
});
var timestamp = response.data.timestamp;
var sign = EncryptUtil_1.EncryptUtil.signSHA1Hex(signParams, timestamp, options.secret);
if (response.data.sign != sign) {
//验签失败
console.warn("验签失败, 服务器响应信息非法!");
throw new Error("验签失败, 服务器响应信息非法!");
}
return response;
};
ApiCheckSignAfterHandler.prototype.order = function () {
return -2; //验签处理器最先执行
};
return ApiCheckSignAfterHandler;
}());
exports.ApiCheckSignAfterHandler = ApiCheckSignAfterHandler;
var ApiDecryptAfterHandler = /** @class */ (function () {
function ApiDecryptAfterHandler() {
}
ApiDecryptAfterHandler.newInstance = function () {
return new ApiDecryptAfterHandler();
};
ApiDecryptAfterHandler.prototype.handle = function (api, options, response) {
var _a;
if (!api.decryptResponse || !api.decryptParams || !((_a = response.data) === null || _a === void 0 ? void 0 : _a.data)) {
return response;
}
var data = response.data.data;
api.decryptParams.forEach(function (paramKey) {
var value = data[paramKey];
if (typeof value === "string") {
//字符串类型才可以加密
try {
var content = EncryptUtil_1.EncryptUtil.decrypt(value, options.secret);
data[paramKey] = content;
}
catch (e) {
console.warn("\u53C2\u6570[".concat(value, "]\u52A0\u5BC6\u5931\u8D25!"));
}
}
});
return response;
};
ApiDecryptAfterHandler.prototype.order = function () {
return 999; //解密处理器最后执行
};
return ApiDecryptAfterHandler;
}());
exports.ApiDecryptAfterHandler = ApiDecryptAfterHandler;