using System.Net; using System.Net.Http; using System.Threading.Tasks; using System.Xml.Linq; namespace RhSolutions.Services; public class CurrencyClient : ICurrencyClient { private readonly HttpClient _httpClient; public HttpStatusCode StatusCode { get; private set; } public CurrencyClient(IServiceProvider serviceProvider) { _httpClient = serviceProvider.GetRequiredService(); } public async Task GetCurrencyCourse(DateTime date) { string request = $"https://www.cbr.ru/scripts/XML_daily.asp?date_req={date.Date.ToString("dd/MM/yyyy")}"; var response = await _httpClient.GetAsync(request); try { response.EnsureSuccessStatusCode(); string xml = await response.Content.ReadAsStringAsync(); XElement valCourses = XElement.Parse(xml); var course = decimal.Parse(valCourses.Elements("Valute") .Where(e => e.Element("Name").Value == "Евро") .FirstOrDefault() .Element("Value").Value); return course; } catch { StatusCode = response.StatusCode; } return null; } }