diff --git a/services/Archival/FilterLists.Archival.Infrastructure/Clients/IHttpContentClient.cs b/services/Archival/FilterLists.Archival.Infrastructure/Clients/IHttpContentClient.cs index 3c0c32f60..b42735d62 100644 --- a/services/Archival/FilterLists.Archival.Infrastructure/Clients/IHttpContentClient.cs +++ b/services/Archival/FilterLists.Archival.Infrastructure/Clients/IHttpContentClient.cs @@ -4,6 +4,7 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; namespace FilterLists.Archival.Infrastructure.Clients { @@ -16,18 +17,28 @@ internal sealed class HttpContentClient : IHttpContentClient { private readonly HttpClient _httpClient; private readonly ICollection _httpResponseMessages = new List(); + private readonly ILogger _logger; - public HttpContentClient(HttpClient httpClient) + public HttpContentClient(HttpClient httpClient, ILogger logger) { _httpClient = httpClient; + _logger = logger; } public async Task GetContentAsync(Uri url, CancellationToken cancellationToken) { var response = await _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, cancellationToken); _httpResponseMessages.Add(response); - response.EnsureSuccessStatusCode(); - return await response.Content.ReadAsStreamAsync(); + try + { + response.EnsureSuccessStatusCode(); + return await response.Content.ReadAsStreamAsync(); + } + catch (HttpRequestException ex) + { + _logger.LogError(ex, "Failed to get content from {Url}", url); + return Stream.Null; + } } public void Dispose()