namespace JSMR.Infrastructure.Http; public class HttpService(HttpClient httpClient) : IHttpService { public Task GetAsync(string url, CancellationToken cancellationToken) => GetAsync(url, new Dictionary(), cancellationToken); public async Task GetAsync(string url, IDictionary headers, CancellationToken cancellationToken) { using HttpRequestMessage request = new(HttpMethod.Get, url); foreach (KeyValuePair header in headers) { request.Headers.TryAddWithoutValidation(header.Key, header.Value); } request.Headers.UserAgent.ParseAdd("JSMR/1.0"); using HttpResponseMessage response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken); string? content = response.Content is null ? null : await response.Content.ReadAsStringAsync(cancellationToken); return new HttpStringResponse { StatusCode = response.StatusCode, Content = content }; } }