#!/usr/bin/env bash # Testa a API do Hotel das Lojas com a sua chave. Uso: HDL_CHAVE=hdl_live_... bash testar-api.sh [--escrita] # --escrita cria uma categoria e um produto OCULTOS de teste, ajusta o estoque e desativa o produto no fim. set -u BASE="${HDL_BASE:-https://api.hoteldaslojas.com.br/v1}" CHAVE="${HDL_CHAVE:-}" [ -z "$CHAVE" ] && { echo "Defina HDL_CHAVE (crie em Configurações › API e webhooks)."; exit 1; } ESCRITA=0; [ "${1:-}" = "--escrita" ] && ESCRITA=1 OK=0; FALHA=0; SEM=0; CORPO=$(mktemp) chama() { # metodo caminho [json] local r; r=$(curl -s -o "$CORPO" -w "%{http_code} %{time_total}" -X "$1" "$BASE$2" -A "HotelDasLojas-Teste/1.0 (bash)" -H "Authorization: Bearer $CHAVE" -H "Content-Type: application/json" ${3:+--data "$3"}) local st=${r%% *} ms; ms=$(awk "BEGIN{printf \"%d\", ${r##* }*1000}") if [ "$st" -ge 200 ] && [ "$st" -lt 300 ]; then OK=$((OK+1)); printf " ✔ %-5s %-36s %s %5s ms\n" "$1" "$2" "$st" "$ms" elif [ "$st" = "403" ]; then SEM=$((SEM+1)); printf " – %-5s %-36s %s sem permissão\n" "$1" "$2" "$st" else FALHA=$((FALHA+1)); printf " ✘ %-5s %-36s %s %s\n" "$1" "$2" "$st" "$(head -c 160 "$CORPO")"; fi } campo() { sed -n "s/.*\"$1\":\([0-9]*\).*/\1/p" "$CORPO" | head -1; } echo "API do Hotel das Lojas · $BASE"; echo chama GET /loja chama GET "/produtos?por_pagina=5"; PID=$(campo id) [ -n "$PID" ] && { chama GET "/produtos/$PID"; chama GET "/produtos/$PID/estoque"; chama GET "/produtos/$PID/imagens"; } chama GET /categorias; CAT=$(campo id) chama GET "/pedidos?por_pagina=5"; PED=$(campo id); [ -n "$PED" ] && chama GET "/pedidos/$PED" chama GET "/clientes?por_pagina=5" chama GET /cupons chama GET /webhooks for r in /frete/faixas-cep /promocoes "/avaliacoes?por_pagina=5" /blog /cartoes-presente /relatorios/resumo; do chama GET "$r"; done if [ $ESCRITA = 1 ]; then echo; echo "Escrita (produto oculto de teste):" chama POST /categorias '{"nome":"Teste da API","visivel":false}'; CAT=$(campo id) if [ -n "$CAT" ]; then chama POST /produtos "{\"nome\":\"Produto de teste da API\",\"preco\":10,\"categoria_id\":$CAT,\"visivel\":false,\"estoque\":{\"controlado\":true,\"quantidade\":5}}"; NP=$(campo id) if [ -n "$NP" ]; then chama PUT "/produtos/$NP/estoque" '{"operacao":"somar","quantidade":3,"motivo":"teste da API"}' chama PATCH "/produtos/$NP" '{"ativo":false}' fi chama PATCH "/categorias/$CAT" '{"ativo":false}' fi fi rm -f "$CORPO" echo; echo "$OK ok · $FALHA falhas · $SEM sem permissão" [ $FALHA = 0 ]