diff --git a/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs b/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs index a8556cc83..a091d7197 100644 --- a/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs +++ b/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs @@ -4,7 +4,6 @@ using CommandLine; using FilterLists.Agent.AppSettings; using FilterLists.Agent.Core.Interfaces.Repositories; -using FilterLists.Agent.Infrastructure.Clients; using FilterLists.Agent.Infrastructure.Repositories; using LibGit2Sharp; using MediatR; @@ -14,6 +13,7 @@ using Microsoft.Extensions.Options; using Octokit; using Polly; +using RestSharp; using Credentials = Octokit.Credentials; using Repository = LibGit2Sharp.Repository; @@ -28,7 +28,7 @@ public static void RegisterAgentServices(this IServiceCollection services) services.AddLocalization(); services.AddTransient(); services.AddMediatR(AppDomain.CurrentDomain.GetAssemblies()); - services.AddSingleton(); + services.AddApiClient(); services.AddGitHubClient(); services.AddUrlRepository(); services.AddListRepository(); @@ -71,6 +71,15 @@ private static void AddLoggingCustom(this IServiceCollection services) }); } + private static void AddApiClient(this IServiceCollection services) + { + services.AddSingleton(b => + { + var filterListsApiSettings = b.GetService>().Value; + return new RestClient(filterListsApiSettings.BaseUrl) {UserAgent = "FilterLists.Agent"}; + }); + } + private static void AddGitHubClient(this IServiceCollection services) { services.AddSingleton(s => diff --git a/src/FilterLists.Agent/Infrastructure/Clients/FilterListsApiClient.cs b/src/FilterLists.Agent/Infrastructure/Clients/FilterListsApiClient.cs deleted file mode 100644 index b1b8646eb..000000000 --- a/src/FilterLists.Agent/Infrastructure/Clients/FilterListsApiClient.cs +++ /dev/null @@ -1,34 +0,0 @@ -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.Clients -{ - 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 request, CancellationToken cancellationToken) - { - var response = await _restClient.ExecuteTaskAsync(request, 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/Clients/IFilterListsApiClient.cs b/src/FilterLists.Agent/Infrastructure/Clients/IFilterListsApiClient.cs deleted file mode 100644 index e9a94e70b..000000000 --- a/src/FilterLists.Agent/Infrastructure/Clients/IFilterListsApiClient.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Threading; -using System.Threading.Tasks; -using RestSharp; - -namespace FilterLists.Agent.Infrastructure.Clients -{ - public interface IFilterListsApiClient - { - Task ExecuteAsync(IRestRequest request, CancellationToken cancellationToken); - } -} \ No newline at end of file diff --git a/src/FilterLists.Agent/Infrastructure/Repositories/ListInfoRepository.cs b/src/FilterLists.Agent/Infrastructure/Repositories/ListInfoRepository.cs index cfb42e28c..705b3a0da 100644 --- a/src/FilterLists.Agent/Infrastructure/Repositories/ListInfoRepository.cs +++ b/src/FilterLists.Agent/Infrastructure/Repositories/ListInfoRepository.cs @@ -3,24 +3,34 @@ using System.Threading.Tasks; using FilterLists.Agent.Core.Entities; using FilterLists.Agent.Core.Interfaces.Repositories; -using FilterLists.Agent.Infrastructure.Clients; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Logging; using RestSharp; namespace FilterLists.Agent.Infrastructure.Repositories { public class ListInfoRepository : IListInfoRepository { - private readonly IFilterListsApiClient _apiClient; + private readonly IRestClient _apiClient; + private readonly IStringLocalizer _localizer; + private readonly ILogger _logger; - public ListInfoRepository(IFilterListsApiClient apiClient) + public ListInfoRepository(IRestClient apiClient, IStringLocalizer stringLocalizer, + ILogger logger) { _apiClient = apiClient; + _localizer = stringLocalizer; + _logger = logger; } public async Task> GetAllAsync(CancellationToken cancellationToken) { var listsRequest = new RestRequest("lists"); - return await _apiClient.ExecuteAsync>(listsRequest, cancellationToken); + 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; } } } \ No newline at end of file