const http = require('http')
const https = require('https')
const crypto = require('crypto')

const PORT = process.env.PORT || 7201
const URL = `http://localhost:${PORT}/webhook/express/status`
const SECRET = process.env.WEBHOOK_SECRET || 'test_secret'

const payload = {
  tracking_no: 'TEST_YT_20260206_0007',
  status_code: 'DELIVERED',
  acceptTime: new Date().toISOString(),
  remark: 'local test event'
}

const bodyText = JSON.stringify(payload)
const ts = Math.floor(Date.now() / 1000).toString()
const sig = crypto.createHmac('sha256', SECRET).update(bodyText + ts).digest('hex')

const options = {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': Buffer.byteLength(bodyText),
    'X-Timestamp': ts,
    'X-Signature': sig
  }
}

const req = http.request(URL, options, (res) => {
  let data = ''
  res.on('data', (chunk) => data += chunk)
  res.on('end', () => {
    console.log('STATUS', res.statusCode)
    try { console.log('BODY', JSON.parse(data)) } catch (e) { console.log('BODY', data) }
    process.exit(0)
  })
})

req.on('error', (e) => { console.error('request error', e); process.exit(2) })
req.write(bodyText)
req.end()
