#!/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