From 095c37e7b1cef52af5341492f887086c6e9de1a8 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Wed, 26 Jun 2019 16:16:17 -0500 Subject: [PATCH] fire ready for capture events, other cleanup --- src/FilterLists.Agent/CaptureLists.cs | 28 -------------- .../{FilterListDto.cs => FilterList.cs} | 2 +- .../FilterLists.Agent.ruleset | 3 +- .../FilterListsApiClient.cs | 11 ++++-- .../ListArchiver/CaptureAllLists.cs | 37 +++++++++++++++++++ .../Events/ListReadyForCapture.cs | 14 +++++++ src/FilterLists.Agent/Program.cs | 19 ++-------- 7 files changed, 65 insertions(+), 49 deletions(-) delete mode 100644 src/FilterLists.Agent/CaptureLists.cs rename src/FilterLists.Agent/{FilterListDto.cs => FilterList.cs} (82%) rename src/FilterLists.Agent/{ => Infrastructure}/FilterListsApiClient.cs (70%) create mode 100644 src/FilterLists.Agent/ListArchiver/CaptureAllLists.cs create mode 100644 src/FilterLists.Agent/ListArchiver/Events/ListReadyForCapture.cs diff --git a/src/FilterLists.Agent/CaptureLists.cs b/src/FilterLists.Agent/CaptureLists.cs deleted file mode 100644 index 095d3581b..000000000 --- a/src/FilterLists.Agent/CaptureLists.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using MediatR; -using RestSharp; - -namespace FilterLists.Agent -{ - public class CaptureLists - { - public class Command : IRequest - { - } - - public class Handler : AsyncRequestHandler - { - private readonly IFilterListsApiClient apiClient; - - public Handler(IFilterListsApiClient apiClient) => this.apiClient = apiClient; - - protected override async Task Handle(Command request, CancellationToken cancellationToken) - { - var listsRequest = new RestRequest("lists"); - var restResponse = await apiClient.ExecuteAsync>(listsRequest); - } - } - } -} \ No newline at end of file diff --git a/src/FilterLists.Agent/FilterListDto.cs b/src/FilterLists.Agent/FilterList.cs similarity index 82% rename from src/FilterLists.Agent/FilterListDto.cs rename to src/FilterLists.Agent/FilterList.cs index e7d12dfac..53fa5d558 100644 --- a/src/FilterLists.Agent/FilterListDto.cs +++ b/src/FilterLists.Agent/FilterList.cs @@ -1,6 +1,6 @@ namespace FilterLists.Agent { - public class FilterListDto + public class FilterList { public int Id { get; private set; } public string ViewUrl { get; private set; } diff --git a/src/FilterLists.Agent/FilterLists.Agent.ruleset b/src/FilterLists.Agent/FilterLists.Agent.ruleset index e4169cd7d..7ca8377c3 100644 --- a/src/FilterLists.Agent/FilterLists.Agent.ruleset +++ b/src/FilterLists.Agent/FilterLists.Agent.ruleset @@ -1,5 +1,5 @@  - + @@ -9,6 +9,7 @@ + diff --git a/src/FilterLists.Agent/FilterListsApiClient.cs b/src/FilterLists.Agent/Infrastructure/FilterListsApiClient.cs similarity index 70% rename from src/FilterLists.Agent/FilterListsApiClient.cs rename to src/FilterLists.Agent/Infrastructure/FilterListsApiClient.cs index d95931763..68cdf615e 100644 --- a/src/FilterLists.Agent/FilterListsApiClient.cs +++ b/src/FilterLists.Agent/Infrastructure/FilterListsApiClient.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using RestSharp; -namespace FilterLists.Agent +namespace FilterLists.Agent.Infrastructure { public interface IFilterListsApiClient { @@ -13,13 +13,16 @@ 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; + private readonly IRestClient _restClient; - public FilterListsApiClient() => restClient = new RestClient(FilterListsApiBaseUrl); + public FilterListsApiClient() + { + _restClient = new RestClient(FilterListsApiBaseUrl); + } public async Task ExecuteAsync(RestRequest request) { - var response = await restClient.ExecuteTaskAsync(request); + var response = await _restClient.ExecuteTaskAsync(request); if (response.ErrorException == null) return response.Data; throw new ApplicationException(ExceptionMessage, response.ErrorException); diff --git a/src/FilterLists.Agent/ListArchiver/CaptureAllLists.cs b/src/FilterLists.Agent/ListArchiver/CaptureAllLists.cs new file mode 100644 index 000000000..10e809274 --- /dev/null +++ b/src/FilterLists.Agent/ListArchiver/CaptureAllLists.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using FilterLists.Agent.Infrastructure; +using FilterLists.Agent.ListArchiver.Events; +using MediatR; +using RestSharp; + +namespace FilterLists.Agent.ListArchiver +{ + public class CaptureAllLists + { + public class Command : IRequest + { + } + + public class Handler : AsyncRequestHandler + { + private readonly IFilterListsApiClient _apiClient; + private readonly IMediator _mediator; + + public Handler(IFilterListsApiClient apiClient, IMediator mediator) + { + _apiClient = apiClient; + _mediator = mediator; + } + + protected override async Task Handle(Command request, CancellationToken cancellationToken) + { + var listsRequest = new RestRequest("lists"); + var filterLists = await _apiClient.ExecuteAsync>(listsRequest); + foreach (var filterList in filterLists) + await _mediator.Publish(new ListReadyForCapture(filterList), cancellationToken); + } + } + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/ListArchiver/Events/ListReadyForCapture.cs b/src/FilterLists.Agent/ListArchiver/Events/ListReadyForCapture.cs new file mode 100644 index 000000000..2049961f9 --- /dev/null +++ b/src/FilterLists.Agent/ListArchiver/Events/ListReadyForCapture.cs @@ -0,0 +1,14 @@ +using MediatR; + +namespace FilterLists.Agent.ListArchiver.Events +{ + public class ListReadyForCapture : INotification + { + public ListReadyForCapture(FilterList filterList) + { + FilterList = filterList; + } + + public FilterList FilterList { get; } + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/Program.cs b/src/FilterLists.Agent/Program.cs index aca04a3bc..e18b11a21 100644 --- a/src/FilterLists.Agent/Program.cs +++ b/src/FilterLists.Agent/Program.cs @@ -2,10 +2,11 @@ using System.Threading.Tasks; using Autofac; using Autofac.Extensions.DependencyInjection; +using FilterLists.Agent.Infrastructure; +using FilterLists.Agent.ListArchiver; using MediatR; using Microsoft.Extensions.DependencyInjection; -//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 //TODO: git add . //TODO: git commit @@ -23,9 +24,9 @@ public static async Task Main() var mediator = _serviceProvider.GetService(); - await mediator.Send(new CaptureLists.Command()); + await mediator.Send(new CaptureAllLists.Command()); - DisposeServices(); + ((IDisposable) _serviceProvider).Dispose(); } private static void RegisterServices() @@ -41,17 +42,5 @@ private static void RegisterServices() var container = containerBuilder.Build(); _serviceProvider = new AutofacServiceProvider(container); } - - private static void DisposeServices() - { - switch (_serviceProvider) - { - case null: - return; - case IDisposable disposableServiceProvider: - disposableServiceProvider.Dispose(); - break; - } - } } } \ No newline at end of file