public async Task <ExchangeRatesInfo> GetRatesInfo(ExchangeRatesParams exchangeRatesInfo) { var dates = exchangeRatesInfo.Dates.TransformToDates(); await _currencySymbolsExRatesApiHelper.ValidateSymbols(this, exchangeRatesInfo.BaseCurrency, exchangeRatesInfo.TargetCurrency); var values = new List <HistoryItemExRatesApi>(); foreach (var date in dates) { var historyItem = await GetRatesOnDate(date.ToFormattedString(), exchangeRatesInfo.BaseCurrency, exchangeRatesInfo.TargetCurrency); values.Add(historyItem); } return(values.TransformToExchangeRatesInfo()); }
public async Task <ExchangeRatesInfo> GetRatesInfo(ExchangeRatesParams exchangeRatesInfo) { var dates = exchangeRatesInfo.Dates.TransformToDates(); DateTime startDate = dates.Min(); DateTime endDate = dates.Max(); var uri = $"timeseries?start_date={startDate.ToFormattedString()}&end_date={endDate.ToFormattedString()}&base={exchangeRatesInfo.BaseCurrency.ToUpper()}&symbols={exchangeRatesInfo.TargetCurrency.ToUpper()}"; var httpResponseMessage = await _httpClient.GetAsync(uri); var responseString = await httpResponseMessage.Content.ReadAsStringAsync(); if (!httpResponseMessage.IsSuccessStatusCode) { throw new HttpRequestException(responseString); } var response = JsonConvert.DeserializeObject <TimeseriesResponseApiExchangerate>(responseString); return(response.TransformToExchangeRatesInfo(dates)); }
public async Task <ActionResult> GetExchangeRatesInfo([FromQuery] ExchangeRatesParams exchangeRatesInfo) { var result = await _apiExchangeRatesService.GetRatesInfo(exchangeRatesInfo); return(Ok(result)); }