status-im/status-go

View on GitHub
_assets/scripts/rpc.sh

Summary

Maintainability
Test Coverage
#!/usr/bin/env bash
set -euo pipefail

RPC_HOST="${RPC_HOST:-localhost}"
RPC_PORT="${RPC_PORT:-8545}"
RPC_URL="${RPC_URL:-http://${RPC_HOST}:${RPC_PORT}/}"

METHOD="$1"
shift
PARAMS=("$@")

if [[ -z "${METHOD}" ]]; then
    echo "No method specified!" >&2
    exit 1
fi
# Parameter expansion trick to avoid var unbound error.
if [[ -z "${PARAMS-}" ]]; then
    PARAMS_STR=''
else
    PARAMS_STR=$(printf '%s\",\"' "${PARAMS[@]}")
    PARAMS_STR="\"${PARAMS_STR%%\",\"}\""
fi

PAYLOAD="{
  \"id\": 1,
  \"jsonrpc\": \"2.0\",
  \"method\": \"${METHOD}\",
  \"params\": [${PARAMS_STR}]
}"

OUT=$(
    curl --fail --show-error --silent \
        -H "Content-type:application/json" \
        -X POST --data "${PAYLOAD}" \
        "${RPC_URL}"
)

echo "${OUT}" | jq .