UNPKG

@tnhb/kits

Version:

TNHB Kits 请求工具 SDK By blak-kong

66 lines 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Kits = void 0; /** * @author blak-kong * @copyright blak-kong@foxmail.com * @description 常用的工具方法 */ const CryptoJS = require("crypto-js"); const uuid = require("uuid"); const access_1 = require("@tnhb/access"); class Kits { /** * sha 加密 urlParams ,生成数字签名 * @param access_key 用户key * @param secret_key 密钥key * @param method 请求类型 * @param baseurl 请求域名 host * @param path 请求地址 * @param params 加密数据 */ static get_sign_sha(path, params, host) { const apiHost = host || 'api.btcgateway.pro'; const apiParams = params || {}; return this.sign_sha('GET', apiHost, path, apiParams); } static post_sign_sha(path, params, host) { const apiHost = host || 'api.btcgateway.pro'; const apiParams = params || {}; return this.sign_sha('POST', apiHost, path, apiParams); } static sign_sha(method, baseurl, path, data) { let accessConfig = access_1.AccessConfigKit.getAccessConfig; let rawParams = this.getUrlRawParams(accessConfig); let paramsData = Object.assign(rawParams, data); let paramsArray = []; for (let item in paramsData) { if (paramsData.hasOwnProperty(item)) { paramsArray.push(item + "=" + encodeURIComponent(paramsData[item])); } } paramsArray.sort(); // 排序会在原数组上操作,不生成副本 let urlParams = paramsArray.join("&"); const meta = [method, baseurl, path, urlParams].join("\n"); const hash = CryptoJS.HmacSHA256(meta, accessConfig.getaccessScrect); const Signature = encodeURIComponent(CryptoJS.enc.Base64.stringify(hash)); urlParams += `&Signature=${Signature}`; return urlParams; } static getUrlRawParams(accessConfig) { return { AccessKeyId: accessConfig.getaccessKey, SignatureMethod: "HmacSHA256", SignatureVersion: 2, Timestamp: new Date().toISOString().slice(0, 19) // 使用 ISO 标准返回 Date 对象的字符串格式 }; } /** * 随机生成字符串 */ static generateStr() { return uuid.v4().replace(/\-/g, ''); } } exports.Kits = Kits; //# sourceMappingURL=Kits.js.map