public CurrencyPrice(Common.CurrencyPrice cur, DateTime stamp, long usd, long eur) { Currency = cur; Stamp = stamp; Usd = usd; Eur = eur; }
private async Task <Models.CurrencyPrice> PerformRequest(Common.CurrencyPrice type, string url, TimeSpan timeout) { SvcResponse result = null; using (var req = new Request(_logger)) { await req .OnResult(async (res) => { if (res.GetHttpStatus() == System.Net.HttpStatusCode.OK) { result = await res.ToJson <SvcResponse>(); } }) .SendGet(url, timeout) ; } if (result == null) { var ex = new Exception($"Failed to get gold rate"); _logger.Error(ex, ex.ToString()); throw ex; } return(new Models.CurrencyPrice( cur: type, stamp: DateTimeOffset.FromUnixTimeSeconds(result.result.timestamp).UtcDateTime, usd: RoundCents(result.result.usd), eur: RoundCents(result.result.eur) )); }
public long?GetPriceInFiat(Common.CurrencyPrice currency, FiatCurrency fiatCurrency) { _ratesLock.EnterReadLock(); try { long?cents = null; if (_rates.ContainsKey(currency)) { switch (fiatCurrency) { case FiatCurrency.Usd: cents = _rates[currency].Usd; break; case FiatCurrency.Eur: cents = _rates[currency].Eur; break; default: throw new NotImplementedException("fiat currency not implemented"); } } return(cents); } finally { _ratesLock.ExitReadLock(); } }