#!/bin/bash set -e # stop on first error set -u # stop when tries to use uninitialized variable # parameters: url, file_with_data, login, password # print response # exit script in case of error function putData { local URL=${1} local FILE=${2} local LOGIN=${3} local PASSWORD=${4} # calculate token & full URL local IDENTITY=`echo -n "${LOGIN}${PASSWORD}" | sha1sum | cut -d \ -f 1` local TIME=`date +%s | tr -d "\n"` local TOKEN=`echo -n "${URL}${IDENTITY}${TIME}" | sha1sum | cut -d \ -f 1` local REQUEST="${URL}&gbLogin=${LOGIN}&gbTime=${TIME}&gbToken=${TOKEN}" # send request & parse response curl -X PUT "${REQUEST}" --data-binary "@${FILE}" } # parameters: url, file_with_data # print response # exit script in case of error function postData { local URL=${1} local FILE=${2} # send request & parse response curl -X POST "${URL}" --data-binary "@${FILE}" } if [ "$#" -eq 2 ]; then postData "$@" elif [ "$#" -eq 4 ]; then putData "$@" else echo "Incorrect parameters!" echo "This program sends POST or PUT request with payload and print the response." echo "Parameters for POST request: URL file_with_payload" echo "Parameters for PUT request: URL file_with_payload login password" exit 1 fi