From 09e8a58d154f9e6b3c6199b46a9abb345a75ebb6 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Wed, 26 Jun 2019 15:34:33 -0500 Subject: [PATCH] get list IDs and ViewUrls from API --- src/FilterLists.Agent/CaptureLists.cs | 15 +++++----- src/FilterLists.Agent/FilterListDto.cs | 8 ++++++ src/FilterLists.Agent/FilterListsApiClient.cs | 28 +++++++++++++++++++ src/FilterLists.Agent/Program.cs | 5 ++-- 4 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 src/FilterLists.Agent/FilterListDto.cs create mode 100644 src/FilterLists.Agent/FilterListsApiClient.cs diff --git a/src/FilterLists.Agent/CaptureLists.cs b/src/FilterLists.Agent/CaptureLists.cs index 9f38c1f09..095d3581b 100644 --- a/src/FilterLists.Agent/CaptureLists.cs +++ b/src/FilterLists.Agent/CaptureLists.cs @@ -1,4 +1,5 @@ -using System.Threading; +using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using MediatR; using RestSharp; @@ -13,16 +14,14 @@ public class Command : IRequest public class Handler : AsyncRequestHandler { - private readonly IRestClient _restClient; + private readonly IFilterListsApiClient apiClient; - public Handler(IRestClient restClient) - { - _restClient = restClient; - } + public Handler(IFilterListsApiClient apiClient) => this.apiClient = apiClient; - protected override Task Handle(Command request, CancellationToken cancellationToken) + protected override async Task Handle(Command request, CancellationToken cancellationToken) { - return Task.CompletedTask; + var listsRequest = new RestRequest("lists"); + var restResponse = await apiClient.ExecuteAsync>(listsRequest); } } } diff --git a/src/FilterLists.Agent/FilterListDto.cs b/src/FilterLists.Agent/FilterListDto.cs new file mode 100644 index 000000000..e7d12dfac --- /dev/null +++ b/src/FilterLists.Agent/FilterListDto.cs @@ -0,0 +1,8 @@ +namespace FilterLists.Agent +{ + public class FilterListDto + { + public int Id { get; private set; } + public string ViewUrl { get; private set; } + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/FilterListsApiClient.cs b/src/FilterLists.Agent/FilterListsApiClient.cs new file mode 100644 index 000000000..d95931763 --- /dev/null +++ b/src/FilterLists.Agent/FilterListsApiClient.cs @@ -0,0 +1,28 @@ +using System; +using System.Threading.Tasks; +using RestSharp; + +namespace FilterLists.Agent +{ + public interface IFilterListsApiClient + { + Task ExecuteAsync(RestRequest request); + } + + public class FilterListsApiClient : IFilterListsApiClient + { + private const string FilterListsApiBaseUrl = "https://filterlists.com/api/v1"; + private const string ExceptionMessage = "Error retrieving response from FilterLists API."; + private readonly IRestClient restClient; + + public FilterListsApiClient() => restClient = new RestClient(FilterListsApiBaseUrl); + + public async Task ExecuteAsync(RestRequest request) + { + var response = await restClient.ExecuteTaskAsync(request); + if (response.ErrorException == null) + return response.Data; + throw new ApplicationException(ExceptionMessage, response.ErrorException); + } + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/Program.cs b/src/FilterLists.Agent/Program.cs index 646f6da85..aca04a3bc 100644 --- a/src/FilterLists.Agent/Program.cs +++ b/src/FilterLists.Agent/Program.cs @@ -4,7 +4,6 @@ using Autofac.Extensions.DependencyInjection; using MediatR; using Microsoft.Extensions.DependencyInjection; -using RestSharp; //TODO: get raw list urls and IDs //TODO: foreach list, download and persist raw list to disk with standardized name and overwriting the previous version @@ -16,7 +15,6 @@ namespace FilterLists.Agent { public static class Program { - private const string FilterListsApiBaseUrl = "https://filterlists.com/api/v1"; private static IServiceProvider _serviceProvider; public static async Task Main() @@ -35,8 +33,9 @@ private static void RegisterServices() var serviceCollection = new ServiceCollection(); var containerBuilder = new ContainerBuilder(); + // register Agent services serviceCollection.AddMediatR(typeof(Program).Assembly); - containerBuilder.Register(c => new RestClient(FilterListsApiBaseUrl)).SingleInstance(); + containerBuilder.RegisterType().AsImplementedInterfaces().SingleInstance(); containerBuilder.Populate(serviceCollection); var container = containerBuilder.Build();