public async Task <List <DailyCurrencyModel> > GetDailyCurrencies() { var url = "https://www.cbr-xml-daily.ru/daily_json.js"; string responseText = null; DailyCurrencyReport data = null; try { await _retryPolicy.ExecuteAsync(async() => { using var response = await _httpClient.GetAsync(url); responseText = await response.Content.ReadAsStringAsync(); }); data = JsonConvert.DeserializeObject <DailyCurrencyReport>(responseText); } catch (HttpRequestException e) { _logger.LogError(e, $"Send request error to {url}"); } catch (JsonException e) { _logger.LogError(e, $"Deserialization error {nameof(DailyCurrencyReport)}."); } catch (Exception e) { _logger.LogError(e, "GetDailyCurrencies error."); } return(MapCurrencies(data)); }
private List <DailyCurrencyModel> MapCurrencies(DailyCurrencyReport dailyCurrencyReport) { if (dailyCurrencyReport is null) { throw new ArgumentNullException(nameof(dailyCurrencyReport)); } if (dailyCurrencyReport.Currencies is null) { throw new ArgumentNullException(nameof(dailyCurrencyReport.Currencies)); } var currencies = new List <SberCurrency>(); currencies.Add(dailyCurrencyReport.Currencies.AMD); currencies.Add(dailyCurrencyReport.Currencies.AUD); currencies.Add(dailyCurrencyReport.Currencies.AZN); currencies.Add(dailyCurrencyReport.Currencies.BGN); currencies.Add(dailyCurrencyReport.Currencies.BRL); currencies.Add(dailyCurrencyReport.Currencies.BYN); currencies.Add(dailyCurrencyReport.Currencies.CAD); currencies.Add(dailyCurrencyReport.Currencies.CHF); currencies.Add(dailyCurrencyReport.Currencies.CNY); currencies.Add(dailyCurrencyReport.Currencies.CZK); currencies.Add(dailyCurrencyReport.Currencies.DKK); currencies.Add(dailyCurrencyReport.Currencies.EUR); currencies.Add(dailyCurrencyReport.Currencies.GBP); currencies.Add(dailyCurrencyReport.Currencies.HKD); currencies.Add(dailyCurrencyReport.Currencies.HUF); currencies.Add(dailyCurrencyReport.Currencies.INR); currencies.Add(dailyCurrencyReport.Currencies.JPY); currencies.Add(dailyCurrencyReport.Currencies.KGS); currencies.Add(dailyCurrencyReport.Currencies.KRW); currencies.Add(dailyCurrencyReport.Currencies.KZT); currencies.Add(dailyCurrencyReport.Currencies.MDL); currencies.Add(dailyCurrencyReport.Currencies.NOK); currencies.Add(dailyCurrencyReport.Currencies.PLN); currencies.Add(dailyCurrencyReport.Currencies.RON); currencies.Add(dailyCurrencyReport.Currencies.SEK); currencies.Add(dailyCurrencyReport.Currencies.SGD); currencies.Add(dailyCurrencyReport.Currencies.TJS); currencies.Add(dailyCurrencyReport.Currencies.TMT); currencies.Add(dailyCurrencyReport.Currencies.TRY); currencies.Add(dailyCurrencyReport.Currencies.UAH); currencies.Add(dailyCurrencyReport.Currencies.USD); currencies.Add(dailyCurrencyReport.Currencies.UZS); currencies.Add(dailyCurrencyReport.Currencies.XDR); currencies.Add(dailyCurrencyReport.Currencies.ZAR); var dailyCurrencyModels = new List <DailyCurrencyModel>(); foreach (var currency in currencies.Where(s => s != null)) { dailyCurrencyModels.Add(new DailyCurrencyModel { Date = dailyCurrencyReport.Date, Nominal = currency.Nominal, Value = currency.Value, Carrency = _mapper.Map <Domain.Currency>(currency), PreviousValue = currency.Previous }); } return(dailyCurrencyModels); }