75 lines
1.4 KiB
75 lines
1.4 KiB
#!/bin/bash
|
|
CURL="/usr/bin/curl"
|
|
SYSCREDS="/etc/default/ngcp-api"
|
|
USERCREDS="${HOME}/.ngcp-api"
|
|
TOOLS="/usr/share/ngcp-panel-tools/ngcp-api.inc"
|
|
|
|
usage () {
|
|
cat << EOF
|
|
Usage: $0 [OPTIONS] <url> [content-type]
|
|
|
|
sends a put request to NGCP REST API
|
|
|
|
OPTIONS:
|
|
-h this help
|
|
-v verbose mode
|
|
-f read the input info from a file instead of read stdin
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
if [ -z "${APIUSER}" ]; then
|
|
if [ -f "${TOOLS}" ]; then
|
|
source "${TOOLS}"
|
|
|
|
importcreds "${USERCREDS}" 0600
|
|
if [ -z "${APIUSER}" ]; then
|
|
importcreds "${SYSCREDS}" 0440
|
|
APIUSER="${AUTH_SYSTEM_LOGIN}:${AUTH_SYSTEM_PASSWORD}"
|
|
APIREALM=(-H 'NGCP-UserAgent: NGCP::API::Client')
|
|
fi
|
|
fi
|
|
if [ -z "${APIUSER}" ]; then
|
|
echo "Error: no authentication credentials found" >&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
INPUT=(-T -)
|
|
|
|
while getopts "f:hv" OPTION
|
|
do
|
|
case ${OPTION} in
|
|
h)
|
|
usage
|
|
;;
|
|
f)
|
|
INPUT=()
|
|
FILE_INPUT=(--data-binary @${OPTARG})
|
|
if [ ! -f "${OPTARG}" ]; then
|
|
echo "No '${OPTARG}' file found"
|
|
usage
|
|
fi
|
|
;;
|
|
v)
|
|
VERBOSE="--verbose"
|
|
;;
|
|
?)
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
shift $((OPTIND - 1))
|
|
|
|
URL="$1"
|
|
if [ -z "${URL}" ] ; then
|
|
usage
|
|
fi
|
|
validateurl "$URL"
|
|
CTYPE=${2:-application/json}
|
|
|
|
${CURL} -i ${VERBOSE} -X PUT \
|
|
"${APIREALM[@]}" \
|
|
-H 'Connection: close' -H 'Prefer: return=representation' \
|
|
-H "Content-Type: ${CTYPE}" \
|
|
--user "${APIUSER}" --insecure "${FILE_INPUT[@]}" "${URL}" "${INPUT[@]}"
|