UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

77 lines 2.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateTimestamp = generateTimestamp; exports.filterParams = filterParams; exports.sortAndConcatenateParams = sortAndConcatenateParams; exports.processParams = processParams; exports.generateMD5Signature = generateMD5Signature; exports.generateSignature = generateSignature; exports.createSignature = createSignature; const crypto_1 = require("crypto"); function generateTimestamp(customTimestamp) { return customTimestamp ?? Date.now(); } function filterParams(params) { const filtered = {}; for (const [key, value] of Object.entries(params)) { if (value !== null && value !== undefined && value !== '') { filtered[key] = value; } } return filtered; } function sortAndConcatenateParams(params) { const sortedKeys = Object.keys(params).sort(); let result = ''; for (const key of sortedKeys) { result += key + String(params[key]); } return result; } function processParams(params) { const filteredParams = filterParams(params); const paramString = sortAndConcatenateParams(filteredParams); return { params: filteredParams, paramString }; } function generateMD5Signature(paramString, appSecret) { const signatureSource = appSecret + paramString + appSecret; const md5Hash = (0, crypto_1.createHash)('md5').update(signatureSource, 'utf8').digest('hex'); return md5Hash.toUpperCase(); } function generateSignature(params, options) { if (!params.appId) { throw new Error('appId is required for signature generation'); } if (!options.appSecret) { throw new Error('appSecret is required for signature generation'); } const timestamp = options.customTimestamp ?? params.timestamp ?? generateTimestamp(); const signatureParams = { ...params, timestamp }; const { params: sortedParams, paramString } = processParams(signatureParams); const signature = generateMD5Signature(paramString, options.appSecret); const result = { signature, timestamp, sortedParams }; if (options.debug) { result.rawString = options.appSecret + paramString + options.appSecret; } if (options.debug) { console.log('[Signature Debug] Sorted parameters:', sortedParams); console.log('[Signature Debug] Parameter string:', paramString); console.log('[Signature Debug] Raw signature string:', result.rawString); console.log('[Signature Debug] Final signature:', signature); } return result; } function createSignature(params, appSecret, debug = false) { return generateSignature(params, { appSecret, debug }); } //# sourceMappingURL=signature.js.map