chef/site-cookbooks/kosmos-bitcoin/templates/btc-price-tracker-daily.sh.erb

53 lines
1.6 KiB
Plaintext

#!/bin/bash
# Calculate yesterday's date in YYYY-MM-DD format
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
echo "Starting price tracking for $YESTERDAY" >&2
# Get USD data and extract values
usd_data=$(curl -s "https://www.bitstamp.net/api/v2/ticker/btcusd/")
if [ $? -eq 0 ] && [ ! -z "$usd_data" ]; then
echo "Successfully retrieved USD price data" >&2
usd_open24=$(echo $usd_data | jq -r '.open_24')
usd_last=$(echo $usd_data | jq -r '.last')
else
echo "ERROR: Failed to retrieve USD price data" >&2
exit 1
fi
# Get EUR data and extract values
eur_data=$(curl -s "https://www.bitstamp.net/api/v2/ticker/btceur/")
if [ $? -eq 0 ] && [ ! -z "$eur_data" ]; then
echo "Successfully retrieved EUR price data" >&2
eur_open24=$(echo $eur_data | jq -r '.open_24')
eur_last=$(echo $eur_data | jq -r '.last')
else
echo "ERROR: Failed to retrieve EUR price data" >&2
exit 1
fi
# Calculate averages
usd_avg=$(( (${usd_open24%.*} + ${usd_last%.*}) / 2 ))
eur_avg=$(( (${eur_open24%.*} + ${eur_last%.*}) / 2 ))
echo "Calculated averages - USD: $usd_avg, EUR: $eur_avg" >&2
# Create JSON
json="{\"EUR\":$eur_avg,\"USD\":$usd_avg}"
# PUT in remote storage
response=$(curl -X PUT \
-H "Authorization: Bearer $RS_AUTH" \
-H "Content-Type: application/json" \
-d "$json" \
-w "%{http_code}" \
-s \
-o /dev/null \
"<%= @rs_base_url %>/$YESTERDAY")
if [ "$response" -eq 200 ] || [ "$response" -eq 201 ]; then
echo "Successfully uploaded price data" >&2
else
echo "ERROR: Failed to upload price data. HTTP status: $response" >&2
exit 1
fi