diff --git a/src/FilterLists.Agent/Infrastructure/FilterListsApi/FilterListsApiClient.cs b/src/FilterLists.Agent/Infrastructure/FilterListsApi/FilterListsApiClient.cs new file mode 100644 index 000000000..1c1b41491 --- /dev/null +++ b/src/FilterLists.Agent/Infrastructure/FilterListsApi/FilterListsApiClient.cs @@ -0,0 +1,35 @@ +using System.Threading; +using System.Threading.Tasks; +using FilterLists.Agent.AppSettings; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using RestSharp; + +namespace FilterLists.Agent.Infrastructure.FilterListsApi +{ + public class FilterListsApiClient : IFilterListsApiClient + { + private readonly IStringLocalizer _localizer; + private readonly ILogger _logger; + private readonly IRestClient _restClient; + + public FilterListsApiClient(IStringLocalizer stringLocalizer, + ILogger logger, IOptions filterListsApiOptions) + { + _localizer = stringLocalizer; + _logger = logger; + _restClient = new RestClient(filterListsApiOptions.Value.BaseUrl) {UserAgent = "FilterLists.Agent"}; + } + + public async Task ExecuteAsync(IRestRequest restRequest, + CancellationToken cancellationToken) + { + var response = await _restClient.ExecuteTaskAsync(restRequest, cancellationToken); + if (response.ErrorException != null) + _logger.LogError(response.ErrorException, + _localizer["Error retrieving response from the FilterLists API."]); + return response.Data; + } + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/Infrastructure/FilterListsApi/IFilterListsApiClient.cs b/src/FilterLists.Agent/Infrastructure/FilterListsApi/IFilterListsApiClient.cs new file mode 100644 index 000000000..6a6638c3c --- /dev/null +++ b/src/FilterLists.Agent/Infrastructure/FilterListsApi/IFilterListsApiClient.cs @@ -0,0 +1,11 @@ +using System.Threading; +using System.Threading.Tasks; +using RestSharp; + +namespace FilterLists.Agent.Infrastructure.FilterListsApi +{ + public interface IFilterListsApiClient + { + Task ExecuteAsync(IRestRequest restRequest, CancellationToken cancellationToken); + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/Infrastructure/FilterListsApi/ListUrlRepository.cs b/src/FilterLists.Agent/Infrastructure/FilterListsApi/ListUrlRepository.cs index fc82c7ec2..f5dedece0 100644 --- a/src/FilterLists.Agent/Infrastructure/FilterListsApi/ListUrlRepository.cs +++ b/src/FilterLists.Agent/Infrastructure/FilterListsApi/ListUrlRepository.cs @@ -2,34 +2,23 @@ using System.Threading; using System.Threading.Tasks; using FilterLists.Agent.Core.List; -using Microsoft.Extensions.Localization; -using Microsoft.Extensions.Logging; using RestSharp; namespace FilterLists.Agent.Infrastructure.FilterListsApi { public class ListUrlRepository : IListUrlRepository { - private readonly IRestClient _apiClient; - private readonly IStringLocalizer _localizer; - private readonly ILogger _logger; + private readonly IFilterListsApiClient _apiClient; - public ListUrlRepository(IRestClient apiClient, IStringLocalizer stringLocalizer, - ILogger logger) + public ListUrlRepository(IFilterListsApiClient filterListsApiClient) { - _apiClient = apiClient; - _localizer = stringLocalizer; - _logger = logger; + _apiClient = filterListsApiClient; } public async Task> GetAllAsync(CancellationToken cancellationToken) { var listsRequest = new RestRequest("lists"); - var response = await _apiClient.ExecuteTaskAsync>(listsRequest, cancellationToken); - if (response.ErrorException != null) - _logger.LogError(response.ErrorException, - _localizer["Error retrieving response from the FilterLists API."]); - return response.Data; + return await _apiClient.ExecuteAsync>(listsRequest, cancellationToken); } } } \ No newline at end of file diff --git a/src/FilterLists.Agent/Infrastructure/FilterListsApi/ServiceCollectionExtensions.cs b/src/FilterLists.Agent/Infrastructure/FilterListsApi/ServiceCollectionExtensions.cs index cf4a8ca9f..8c516859c 100644 --- a/src/FilterLists.Agent/Infrastructure/FilterListsApi/ServiceCollectionExtensions.cs +++ b/src/FilterLists.Agent/Infrastructure/FilterListsApi/ServiceCollectionExtensions.cs @@ -1,8 +1,5 @@ -using FilterLists.Agent.AppSettings; -using FilterLists.Agent.Core.List; +using FilterLists.Agent.Core.List; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using RestSharp; namespace FilterLists.Agent.Infrastructure.FilterListsApi { @@ -10,11 +7,7 @@ public static class ServiceCollectionExtensions { public static void AddFilterListsApiResources(this IServiceCollection services) { - services.AddSingleton(b => - { - var filterListsApiSettings = b.GetService>().Value; - return new RestClient(filterListsApiSettings.BaseUrl) {UserAgent = "FilterLists.Agent"}; - }); + services.AddSingleton(); services.AddTransient(); } }