示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
 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);
     }
 }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
 private async Task SetCacheValueAsync(string baseCurrency, ExchangeRatesModel value)
 {
     await _distributedCache.SetStringAsync(BuildCacheKey(baseCurrency),
                                            value.ToJson(),
                                            new DistributedCacheEntryOptions { AbsoluteExpiration = DateTime.UtcNow.Date.AddDays(1) });
 }