#!/usr/bin/env bash
set -euo pipefail

# Скачивает данные шаблона по коду через FO API и пишет ответ в <код>.json в текущей директории.
# Переопределение токена: export INTRA_FO_TOKEN='...'

readonly API_URL='https://intra-fo.vasmfpro.ru/fo/api/v1/crudility/data/templates/pack/filter'
readonly TOKEN="${INTRA_FO_TOKEN:-Gh7JtwPR-8hWE-zABnj4fjuwI-X1ZQB3}"

usage() {
  echo "Usage: $0 <landing-code> [output-dir]" >&2
  echo "  landing-code — значение для поля args.code в теле запроса" >&2
  echo "  output-dir   — каталог для файла (по умолчанию: текущий)" >&2
  exit 1
}

[[ ${1:-} ]] || usage
code="$1"
out_dir="${2:-.}"

if [[ ! -d "$out_dir" ]]; then
  echo "Not a directory: $out_dir" >&2
  exit 1
fi

# Имя файла по коду; небезопасные для пути символы заменяем
safe_name="$(printf '%s' "$code" | tr '/\\:*?"<>|' "'" | tr -d '\n')"
[[ -n "$safe_name" ]] || { echo "Invalid code" >&2; exit 1; }
out_file="${out_dir%/}/${safe_name}.json"

payload="$(
  python3 -c '
import json, sys
body = {
  "limit": 999,
  "offset": 0,
  "args": {"statusIds": ["130"], "code": sys.argv[1]},
  "wrapped": False,
  "enriched": False,
}
print(json.dumps(body, ensure_ascii=False), end="")
' "$code"
)"

http_code="$(curl -sS -o "$out_file" -w '%{http_code}' -X POST "$API_URL" \
  -H "x-token-header: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d "$payload")"

if [[ "$http_code" != 2* ]]; then
  echo "HTTP $http_code — ответ сохранён в $out_file (проверьте содержимое)" >&2
  exit 1
fi

echo "Saved: $out_file"
