qortal/tools/qort
CalDescent f05cd9ea51 Added API key support to qort script
Currently needs to be run from either the qortal directory or the tools directory in order to pick up the API key
2022-01-14 11:45:40 +00:00

96 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# default output post-processor
postproc=cat
# Qortal defaults
port=12391
example_host=node10.qortal.org
# called-as name
name="${0##*/}"
script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
while [ -n "$*" ]; do
case $1 in
-p)
shift
postproc="json_pp -f json -t json -json_opt utf8,pretty"
;;
[Dd][Ee][Ll][Ee][Tt][Ee])
shift
method="-X DELETE"
;;
-l)
shift
src="--interface localhost"
;;
-t)
shift
testnet=true
;;
-j)
shift
content_type="Content-Type: application/json"
;;
*)
break
;;
esac
done
if [ "${name}" = "qort" ]; then
port=${testnet:+62391}
port=${port:-12391}
example_host=node10.qortal.org
fi
if [ -z "$*" ]; then
echo "usage: $name [-l] [-p] [-t] [DELETE] <url> [<post-data>]"
echo "-l: use localhost as source address"
echo "-p: pretty-print JSON output"
echo "-t: use testnet port"
echo "example (using localhost:${port}): $name -p blocks/last"
echo "example: $name -p http://${example_host}:${port}/blocks/last"
echo "example: BASE_URL=http://${example_host}:${port} $name -p blocks/last"
echo "example: BASE_URL=${example_host} $name -p blocks/last"
echo "example: $name -l DELETE peers/known"
exit
fi
url=$1
shift
if [ -f "apikey.txt" ]; then
apikey=$(cat "apikey.txt")
elif [ -f "${script_dir}/../apikey.txt" ]; then
apikey=$(cat "${script_dir}/../apikey.txt")
fi
if [ "${url:0:4}" != "http" ]; then
base_url=${BASE_URL-localhost:${port}}
if [ "${base_url:0:4}" != "http" ]; then
base_url="http://${base_url}"
fi
if [ -n "${base_url/#*:[0-9[0-9]*}" ]; then
base_url="${base_url%%/}:${port}"
fi
url="${base_url%%/}/${url#/}"
fi
if [ "$#" != 0 ]; then
data="--data"
fi
curl --silent --insecure --connect-timeout 5 -H "X-API-KEY: ${apikey}" ${content_type:+--header} "${content_type}" ${method} ${src} --url ${url} ${data} "$@" | ${postproc}
echo