#!/usr/bin/env bash
# Simulador do aviso de teste do Softeum Pedidos, só com curl e openssl (Linux, macOS ou Git Bash no Windows).
# Manda ao seu endereço um aviso "teste" assinado exatamente como o Softeum assina.
#
#   ./simular-aviso.sh https://erp.suaempresa.com.br/softeum/pedidos whsec_...
#
# Para simular um pedido completo, use simular-aviso.mjs (Node.js).

set -euo pipefail

ENDERECO="${1:?Uso: ./simular-aviso.sh <endereço> <segredo>}"
SEGREDO="${2:?Uso: ./simular-aviso.sh <endereço> <segredo>}"

ID="0199a3c4-5f10-7a2b-8c3d-$(printf '%012d' "$(date +%s)")"
CRIADO_EM="$(TZ=America/Sao_Paulo date +%Y-%m-%dT%H:%M:%S)-03:00"
CORPO="{\"id\":\"$ID\",\"tipo\":\"teste\",\"criado_em\":\"$CRIADO_EM\"}"

# A assinatura: HMAC-SHA256 de "<t>.<corpo>" com o segredo inteiro (com o prefixo whsec_), em hexadecimal.
T="$(date +%s)"
V1="$(printf '%s.%s' "$T" "$CORPO" | openssl dgst -sha256 -hmac "$SEGREDO" -hex | sed 's/^.*= *//')"

echo "Enviando: $CORPO"
curl -sS -X POST "$ENDERECO" \
  --max-time 10 \
  -H "Content-Type: application/json" \
  -H "User-Agent: Softeum-Pedidos (simulador)" \
  -H "Softeum-Evento: teste" \
  -H "Softeum-Entrega: $ID" \
  -H "Softeum-Assinatura: t=$T,v1=$V1" \
  --data-binary "$CORPO" \
  -w '\nCódigo da resposta: %{http_code} em %{time_total} s (2xx = teste aprovado)\n'
