Example #1
0
        public void RefreshRatesFromApiAsync(string apiBaseUrl, string apiKey)
        {
            string apiUrl = Utilities.Utilities.GenerateUrlWithCurrencySymbols(apiBaseUrl, apiKey);

            if (!string.IsNullOrWhiteSpace(apiUrl))
            {
                List <CurrencyRates> rates = _dataHandler.GetExchangeRate(Enum.GetName(typeof(EnumCurrencyList), EnumCurrencyList.AUD), Enum.GetName(typeof(EnumCurrencyList), EnumCurrencyList.EUR));

                if (rates == null || rates.Where(x => x.Timestamp >= DateTime.Now.Date).Count() <= 0)
                {
                    var handler = new HttpClientHandler();
                    handler.DefaultProxyCredentials = CredentialCache.DefaultCredentials;

                    HttpClient client = new HttpClient(handler);

                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    HttpResponseMessage response = client.GetAsync(apiUrl).Result;

                    if (response.IsSuccessStatusCode)
                    {
                        string     output    = response.Content.ReadAsStringAsync().Result;
                        Rootobject converter = Newtonsoft.Json.JsonConvert.DeserializeObject <Rootobject>(output);

                        var currencyRates = _converter.GetRatesFromJson(converter);
                        _dataHandler.AddExchangeRates(currencyRates);
                    }
                    else
                    {
                        throw new Exception(string.Format("{0}, {1}", response.StatusCode, response.StatusCode));
                    }
                }
            }
        }