mirror of
https://github.com/collinbarrett/FilterLists.git
synced 2026-03-11 09:04:27 +00:00
simplify RestSharp/FilterListsApi org
This commit is contained in:
parent
53ea4c9973
commit
b9d39be154
4 changed files with 25 additions and 51 deletions
|
|
@ -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<Parser>();
|
||||
services.AddMediatR(AppDomain.CurrentDomain.GetAssemblies());
|
||||
services.AddSingleton<IFilterListsApiClient, FilterListsApiClient>();
|
||||
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<IRestClient>(b =>
|
||||
{
|
||||
var filterListsApiSettings = b.GetService<IOptions<FilterListsApiSettings>>().Value;
|
||||
return new RestClient(filterListsApiSettings.BaseUrl) {UserAgent = "FilterLists.Agent"};
|
||||
});
|
||||
}
|
||||
|
||||
private static void AddGitHubClient(this IServiceCollection services)
|
||||
{
|
||||
services.AddSingleton<IGitHubClient, GitHubClient>(s =>
|
||||
|
|
|
|||
|
|
@ -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<FilterListsApiClient> _localizer;
|
||||
private readonly ILogger<FilterListsApiClient> _logger;
|
||||
private readonly IRestClient _restClient;
|
||||
|
||||
public FilterListsApiClient(IStringLocalizer<FilterListsApiClient> stringLocalizer,
|
||||
ILogger<FilterListsApiClient> logger, IOptions<FilterListsApiSettings> filterListsApiOptions)
|
||||
{
|
||||
_localizer = stringLocalizer;
|
||||
_logger = logger;
|
||||
_restClient = new RestClient(filterListsApiOptions.Value.BaseUrl) {UserAgent = "FilterLists.Agent"};
|
||||
}
|
||||
|
||||
public async Task<TResponse> ExecuteAsync<TResponse>(IRestRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
var response = await _restClient.ExecuteTaskAsync<TResponse>(request, cancellationToken);
|
||||
if (response.ErrorException == null)
|
||||
_logger.LogError(response.ErrorException,
|
||||
_localizer["Error retrieving response from the FilterLists API."]);
|
||||
return response.Data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using RestSharp;
|
||||
|
||||
namespace FilterLists.Agent.Infrastructure.Clients
|
||||
{
|
||||
public interface IFilterListsApiClient
|
||||
{
|
||||
Task<TResponse> ExecuteAsync<TResponse>(IRestRequest request, CancellationToken cancellationToken);
|
||||
}
|
||||
}
|
||||
|
|
@ -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<ListInfoRepository> _localizer;
|
||||
private readonly ILogger<ListInfoRepository> _logger;
|
||||
|
||||
public ListInfoRepository(IFilterListsApiClient apiClient)
|
||||
public ListInfoRepository(IRestClient apiClient, IStringLocalizer<ListInfoRepository> stringLocalizer,
|
||||
ILogger<ListInfoRepository> logger)
|
||||
{
|
||||
_apiClient = apiClient;
|
||||
_localizer = stringLocalizer;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<ListInfo>> GetAllAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
var listsRequest = new RestRequest("lists");
|
||||
return await _apiClient.ExecuteAsync<IEnumerable<ListInfo>>(listsRequest, cancellationToken);
|
||||
var response = await _apiClient.ExecuteTaskAsync<IEnumerable<ListInfo>>(listsRequest, cancellationToken);
|
||||
if (response.ErrorException != null)
|
||||
_logger.LogError(response.ErrorException,
|
||||
_localizer["Error retrieving response from the FilterLists API."]);
|
||||
return response.Data;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue