#!/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] [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[@]}"