public List <ExchangeRatesModel> GetAllExchangeRates() { allExchangeRates = new List <ExchangeRatesModel>(); string XMLPath = ConfigurationManager.AppSettings["XMLPath"]; using (XmlReader xmlr = XmlReader.Create(XMLPath)) { xmlr.ReadToFollowing("Cube"); while (xmlr.Read()) { if (xmlr.NodeType != XmlNodeType.Element) { continue; } if (xmlr.GetAttribute("currency") != null && xmlr.GetAttribute("rate") != null) { exchangeRatesModel = new ExchangeRatesModel { Currency = xmlr.GetAttribute("currency").ToUpper(), Rate = decimal.Parse(xmlr.GetAttribute("rate"), CultureInfo.InvariantCulture) }; allExchangeRates.Add(exchangeRatesModel); } } } return(allExchangeRates); }
private static decimal ReturnExchangeRate(string fromAsset, ExchangeRatesModel value) { var containsRate = value.Rates.TryGetValue(fromAsset, out var rate); if (!containsRate) { throw new EntityNotFoundException(); } return((decimal)rate); }
private static void Set(ExchangeRatesModel exchangeRates) { if (!string.IsNullOrEmpty(exchangeRates.error)) { return; } if (ExchangeRates.Any(p => p.@base == exchangeRates.@base)) { var exchangeRatesData = ExchangeRates.FirstOrDefault(p => p.@base == exchangeRates.@base); exchangeRatesData.rates = exchangeRates.rates; exchangeRatesData.date = exchangeRates.date; } else { ExchangeRates.Add(exchangeRates); } }
private static ExchangeRatesModel Get(string @base = "USD") { var exchangeRates = new ExchangeRatesModel(); var request = WebRequest.Create("https://api.exchangeratesapi.io/latest?base=" + @base.ToUpper()); var response = request.GetResponse(); using (var stream = new StreamReader(response.GetResponseStream())) { string line; if ((line = stream.ReadLine()) != null) { exchangeRates = JsonConvert.DeserializeObject <ExchangeRatesModel>(line); } } return(exchangeRates); }
public async Task <Dictionary <DateTime, float> > ReturnExchangeRateData(IEnumerable <DateTime> dateList, string sourceCurrency, string destinationCurrency) { Dictionary <DateTime, float> ratesDate = new Dictionary <DateTime, float>(); using (var client = new HttpClient()) { string startDate = ""; string endDate = ""; foreach (DateTime date in dateList) { startDate = date.AddDays(-1).ToString("yyyy-MM-dd"); endDate = date.ToString("yyyy-MM-dd"); var url = new Uri($"https://api.exchangeratesapi.io/history?start_at={startDate}&end_at={endDate}&base={sourceCurrency}&symbols={destinationCurrency}"); string json = ""; try { var response = await client.GetAsync(url); using (var content = response.Content) { json = await content.ReadAsStringAsync(); } } catch (Exception) { } if (!string.IsNullOrEmpty(json)) { ExchangeRatesModel oneRate = JsonConvert.DeserializeObject <ExchangeRatesModel>(json); if (oneRate != null && oneRate.RatesList != null && oneRate.RatesList.ContainsKey(date)) { float singleRate = oneRate.RatesList[date][destinationCurrency]; ratesDate.Add(date, singleRate); } } } } return(ratesDate); }
private async Task SetCacheValueAsync(string baseCurrency, ExchangeRatesModel value) { await _distributedCache.SetStringAsync(BuildCacheKey(baseCurrency), value.ToJson(), new DistributedCacheEntryOptions { AbsoluteExpiration = DateTime.UtcNow.Date.AddDays(1) }); }