#!/usr/bin/env bash
# 01-crear-clave.sh — crea una clave de ingesta.
#
# El token se enseña UNA sola vez. Aquí se ENMASCARA: solo se muestra el prefijo
# (los primeros 12 caracteres, `val_XXXXXXXX`) y el resto se sustituye por `<…>`.
# El token completo se guarda solo en el workdir efímero para los pasos siguientes.
#
# Uso:  ./01-crear-clave.sh [nombre]     (por defecto: backup-host)
set -euo pipefail

BASE="${VALET_BASE:-http://127.0.0.1:3458}"
WORK="${WORKDIR:-/tmp/opencode/valet-847}"
NAME="${1:-backup-host}"

echo "== POST /api/ingest-keys  name=$NAME =="
# AUTH_ENABLED=false => no hace falta cookie de sesión (la API opera como `dev`).
RAW=$(curl -s -w $'\n%{http_code}' -X POST "$BASE/api/ingest-keys" \
  -H "Content-Type: application/json" \
  -d "{\"name\":\"$NAME\"}")
BODY=$(printf '%s' "$RAW" | head -n1)
CODE=$(printf '%s' "$RAW" | tail -n1)

# Salida enmascarada: el token se recorta a su prefijo + <…>.
echo "$BODY" | python3 -c '
import sys, json
d = json.load(sys.stdin)
out = {"id": d["id"], "name": d["name"], "prefix": d["prefix"],
       "token": d["token"][:12] + "<…>"}
print(json.dumps(out, ensure_ascii=False))
'
echo "[$CODE]"

# Estado para los pasos siguientes (efímero, nunca en la evidencia).
echo "$BODY" | python3 -c 'import sys,json;print(json.load(sys.stdin)["id"])' > "$WORK/keyid.txt"
echo "$BODY" | python3 -c 'import sys,json;print(json.load(sys.stdin)["token"])' > "$WORK/token.txt"
echo "# token completo guardado en $WORK/token.txt (efímero, NO se imprime)"
echo "# máscara aplicada: token -> primeros 12 caracteres + <…>"
