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); }
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); }