/**
 * HMAC-SHA256 签名工具
 *
 * 签名规则：
 * 1. 将 GET 的 Query 参数 + nonce + timestamp 按 key 字母序排列
 * 2. 格式: key1=value1&key2=value2&...
 * 3. POST/PUT 的 JSON body 不参与签名
 * 4. 使用 HMAC-SHA256 算法，以 appSecret 为密钥，输出 hex 小写
 */

import CryptoJS from 'crypto-js'

export function generateSignHeaders(appKey, appSecret, queryParams = {}) {
  const timestamp = Date.now().toString()
  const nonce = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)

  // Build signature string: sorted query params + nonce + timestamp
  const signParams = { ...queryParams, nonce, timestamp }
  const sortedKeys = Object.keys(signParams).sort()
  const signString = sortedKeys.map(k => `${k}=${signParams[k]}`).join('&')

  // HMAC-SHA256
  const signature = CryptoJS.HmacSHA256(signString, appSecret).toString(CryptoJS.enc.Hex)

  return {
    'X-App-Key': appKey,
    'X-Timestamp': timestamp,
    'X-Nonce': nonce,
    'X-Signature': signature
  }
}
