49 lines
1.3 KiB
Bash
Executable File
49 lines
1.3 KiB
Bash
Executable File
#!/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}" &
|