#!/usr/bin/env bash set -xv post_file() { #kill process after 30 minutes (360*5=30 minutes) max_retry=5 retry_count=0 file_path="${1}" # Give us write permissions on the file to prevent problems if the user # uploads a read-only file. chmod +w "${file_path}" #We must remove commas because CURL can't upload files with commas in the name # http://curl.haxx.se/mail/archive-2009-07/0029.html stripped_file_path=${file_path//','/''} mv "${file_path}" "${stripped_file_path}" file_path="${stripped_file_path}" # filename="${file_path##*/}" airtime_conf_path=/etc/libretime/config.yml #instance_path will look like 1/1384, for example http_path=$(grep base_url ${airtime_conf_path} | awk '{print $3;}') http_port=$(grep base_port ${airtime_conf_path} | awk '{print $3;}') #post request url - http://bananas.airtime.pro/rest/media, for example url=http:// url+=$http_path url+=: url+=$http_port url+=/rest/media api_key=$(grep api_key ${airtime_conf_path} | awk '{print $3;}') # -f is needed to make curl fail if there's an HTTP error code # -L is needed to follow redirects! (just in case) until curl -fL --max-time 30 $url -u $api_key":" -X POST -F "file=@${file_path}"; do retry_count=$((retry_count + 1)) if [ $retry_count -ge $max_retry ]; then break fi sleep 5 done } post_file "${1}" &