Beispiel #1
0
        public static CurrencyExchangeRates GetLatestCurrencyExchangeRatesFromWebAPI(string BaseCurrencyCode, string TargetCurrencyCode)
        {
            CurrencyExchangeRates CurrencyExchangeRates = new CurrencyExchangeRates();

            try
            {
                #region Get Latest Exchange Rates

                string URL_LatestExchangeRatesAPI_Base_To_Target = Constants.Constants.URL_LatestExchangeRatesAPI_Base_To_Target
                                                                   .Replace(Constants.Constants.BaseCurrency, BaseCurrencyCode)
                                                                   .Replace(Constants.Constants.TargetCurrency, TargetCurrencyCode);

                using (WebClient webClient = new WebClient())
                {
                    string jsonResponse = webClient.DownloadString(URL_LatestExchangeRatesAPI_Base_To_Target); //Get JSON Response String

                    if (string.IsNullOrWhiteSpace(jsonResponse) == false)
                    {
                        //Convert JSON Response String To Object
                        CurrencyExchangeRatesJSON jsonResponseObject = JsonConvert.DeserializeObject <CurrencyExchangeRatesJSON>(jsonResponse);

                        if (jsonResponseObject != null && jsonResponseObject.Date.HasValue && jsonResponseObject.Rates.Count() > 0)
                        {
                            foreach (var eachRate in jsonResponseObject.Rates) //For Every Target Currency Exchange - Create And Store CurrencyExchangeRates Object
                            {
                                CurrencyExchangeRates = new CurrencyExchangeRates()
                                {
                                    Date               = jsonResponseObject.Date.Value.Date.ToString(Constants.Constants.DateFormat),
                                    BaseCurrencyCode   = jsonResponseObject.Base,
                                    TargetCurrencyCode = eachRate.Key,
                                    ExchangeRate       = eachRate.Value
                                };
                            }
                        }
                    }
                }

                #endregion Get Latest Exchange Rates
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(CurrencyExchangeRates);
        }
Beispiel #2
0
        public static List <CurrencyExchangeRates> GetLatestCurrencyExchangeRatesFromWebAPI()
        {
            List <string> CurrencyCodesStringList = Constants.Constants.CurrencyKeyValuePairs.Select(type => type.Key).ToList();
            List <CurrencyExchangeRates> CurrencyExchangeRatesList          = new List <CurrencyExchangeRates>();
            List <CurrencyExchangeRates> CurrencyExchangeRatesList_Distinct = new List <CurrencyExchangeRates>();

            try
            {
                #region Get Latest Exchange Rates

                foreach (var eachBaseCurrencyCode in CurrencyCodesStringList) //Loop Through Every Base Currency That We Are Interested In
                {
                    string URL_LatestExchangeRatesAPI_Base = Constants.Constants.URL_LatestExchangeRatesAPI_Base
                                                             .Replace(Constants.Constants.BaseCurrency, eachBaseCurrencyCode);

                    using (WebClient webClient = new WebClient())
                    {
                        string jsonResponse = webClient.DownloadString(URL_LatestExchangeRatesAPI_Base); //Get JSON Response String

                        if (string.IsNullOrWhiteSpace(jsonResponse) == false)
                        {
                            //Convert JSON Response String To Object
                            CurrencyExchangeRatesJSON jsonResponseObject = JsonConvert.DeserializeObject <CurrencyExchangeRatesJSON>(jsonResponse);

                            if (jsonResponseObject != null && jsonResponseObject.Date.HasValue && jsonResponseObject.Rates.Count() > 0)
                            {
                                foreach (var eachRate in jsonResponseObject.Rates)      //For Every Target Currency Exchange - Create And Store CurrencyExchangeRates Object
                                {
                                    if (CurrencyCodesStringList.Contains(eachRate.Key)) //Store Only The Exchange Rates Of Target Currencies That We Are Interested In
                                    {
                                        CurrencyExchangeRatesList.Add(new CurrencyExchangeRates()
                                        {
                                            Date               = jsonResponseObject.Date.Value.Date.ToString(Constants.Constants.DateFormat),
                                            BaseCurrencyCode   = jsonResponseObject.Base,
                                            TargetCurrencyCode = eachRate.Key,
                                            ExchangeRate       = eachRate.Value
                                        });
                                    }
                                }
                            }
                        }
                    }
                }

                #endregion Get Latest Exchange Rates

                #region Remove Duplicates

                foreach (var eachCurrencyExchangeRates in CurrencyExchangeRatesList)
                {
                    if (CurrencyExchangeRatesList_Distinct
                        .Where(type => type.Date == eachCurrencyExchangeRates.Date &&
                               type.BaseCurrencyCode == eachCurrencyExchangeRates.BaseCurrencyCode &&
                               type.TargetCurrencyCode == eachCurrencyExchangeRates.TargetCurrencyCode)
                        .Any() == false)
                    {
                        CurrencyExchangeRatesList_Distinct.Add(eachCurrencyExchangeRates);
                    }
                }

                #endregion Remove Duplicates
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(CurrencyExchangeRatesList_Distinct);
        }