50 lines
1.4 KiB
Plaintext
50 lines
1.4 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
|
|
|
|
# Fetch and process rates for a fiat currency
|
|
get_price_data() {
|
|
local currency=$1
|
|
local data avg open24 last
|
|
|
|
data=$(curl -s "https://www.bitstamp.net/api/v2/ticker/btc${currency,,}/")
|
|
if [ $? -eq 0 ] && [ ! -z "$data" ]; then
|
|
echo "Successfully retrieved ${currency} price data" >&2
|
|
open24=$(echo "$data" | jq -r '.open_24')
|
|
last=$(echo "$data" | jq -r '.last')
|
|
avg=$(( (${open24%.*} + ${last%.*}) / 2 ))
|
|
echo $avg
|
|
else
|
|
echo "ERROR: Failed to retrieve ${currency} price data" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Get price data for each currency
|
|
usd_avg=$(get_price_data "USD")
|
|
eur_avg=$(get_price_data "EUR")
|
|
gbp_avg=$(get_price_data "GBP")
|
|
|
|
# Create JSON
|
|
json="{\"EUR\":$eur_avg,\"USD\":$usd_avg,\"GBP\":$gbp_avg}"
|
|
echo "Rates: $json" >&2
|
|
|
|
# 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
|