Files
metamask-integration/chain138-snap/scripts/validate-token-lists.sh

75 lines
1.9 KiB
Bash

#!/usr/bin/env bash
# Validate that token/bridge/networks list URLs return valid JSON.
# Usage: ./validate-token-lists.sh [URL1] [URL2] ...
# If no URLs given, reads from env: TOKEN_LIST_JSON_URL, BRIDGE_LIST_JSON_URL, NETWORKS_JSON_URL.
# Requires: curl, jq (or python3 for fallback).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VALID=0
INVALID=0
validate_url() {
local url="$1"
local name="${2:-$url}"
local body
if ! body="$(curl -sS -L --connect-timeout 15 --max-time 30 "$url" 2>/dev/null)"; then
echo "$name: failed to fetch"
((INVALID++)) || true
return 1
fi
if [ -z "$body" ]; then
echo "$name: empty response"
((INVALID++)) || true
return 1
fi
if command -v jq &>/dev/null; then
if echo "$body" | jq . &>/dev/null; then
echo "$name: valid JSON"
((VALID++)) || true
return 0
fi
else
if echo "$body" | python3 -c "import sys,json; json.load(sys.stdin)" 2>/dev/null; then
echo "$name: valid JSON"
((VALID++)) || true
return 0
fi
fi
echo "$name: invalid JSON"
((INVALID++)) || true
return 1
}
echo "=============================================="
echo "Token / bridge / networks list JSON validation"
echo "=============================================="
echo ""
if [ $# -gt 0 ]; then
for url in "$@"; do
validate_url "$url" "$url"
done
else
for var in TOKEN_LIST_JSON_URL BRIDGE_LIST_JSON_URL NETWORKS_JSON_URL; do
url="${!var:-}"
if [ -n "$url" ]; then
validate_url "$url" "$var"
else
echo "$var not set, skipping"
fi
done
if [ "$VALID" -eq 0 ] && [ "$INVALID" -eq 0 ]; then
echo "Set TOKEN_LIST_JSON_URL, BRIDGE_LIST_JSON_URL, or NETWORKS_JSON_URL, or pass URLs as arguments."
exit 0
fi
fi
echo ""
echo "Result: $VALID valid, $INVALID invalid"
if [ "$INVALID" -gt 0 ]; then
exit 1
fi
exit 0