From 6c9ae48819ee11c7bce9cca7915641fad46a7bce Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Sat, 19 Sep 2020 17:23:03 -0500 Subject: [PATCH] =?UTF-8?q?feat(archival):=20=E2=9C=A8=20catch=20and=20log?= =?UTF-8?q?=20HttpRequestException?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Clients/IHttpContentClient.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) 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()