private void fetch_bitcoin_rate()
{
int refetch_interval_minutes = 60;
bool need_to_fetch = false;
if (!exchange_rates.Keys.Contains("BTC"))
{
exchange_rates["BTC"] = new exchange_rate();
need_to_fetch = true;
}
else if (exchange_rates["BTC"].time_fetched.AddMinutes(refetch_interval_minutes) < DateTime.Now)
{
need_to_fetch = true;
}
if (need_to_fetch)
{
string url = "http://www.bitcoincharts.com/t/weighted_prices.json";
string data = urlread(url);
JObject j = JsonConvert.DeserializeObject<JObject>(data);
exchange_rates["BTC"].rate = 1.0 / Convert.ToDouble(j["USD"]["24h"].ToString());
exchange_rates["BTC"].time_fetched = DateTime.Now;
save_exchange_rates_in_settings();
}
}