Exemplo n.º 1
0
 public CurrencyPrice(Common.CurrencyPrice cur, DateTime stamp, long usd, long eur)
 {
     Currency = cur;
     Stamp    = stamp;
     Usd      = usd;
     Eur      = eur;
 }
Exemplo n.º 2
0
        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)
                       ));
        }
Exemplo n.º 3
0
        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();
            }
        }