diff --git a/src/FilterLists.Agent/Core/Entities/LicenseUrls.cs b/src/FilterLists.Agent/Core/Entities/LicenseUrls.cs index 680514458..5fa8dd1c9 100644 --- a/src/FilterLists.Agent/Core/Entities/LicenseUrls.cs +++ b/src/FilterLists.Agent/Core/Entities/LicenseUrls.cs @@ -6,7 +6,6 @@ namespace FilterLists.Agent.Core.Entities [UsedImplicitly] public class LicenseUrls : IEntityUrls { - public int Id { get; set; } public Uri DescriptionUrl { get; set; } } } \ No newline at end of file diff --git a/src/FilterLists.Agent/Core/Entities/ListUrls.cs b/src/FilterLists.Agent/Core/Entities/ListUrls.cs index 00b4c0c1e..53170ec11 100644 --- a/src/FilterLists.Agent/Core/Entities/ListUrls.cs +++ b/src/FilterLists.Agent/Core/Entities/ListUrls.cs @@ -6,7 +6,6 @@ namespace FilterLists.Agent.Core.Entities [UsedImplicitly] public class ListUrls : IEntityUrls { - public int Id { get; private set; } public Uri ChatUrl { get; private set; } public Uri DescriptionSourceUrl { get; private set; } public Uri DonateUrl { get; private set; } diff --git a/src/FilterLists.Agent/Core/Entities/MaintainerUrls.cs b/src/FilterLists.Agent/Core/Entities/MaintainerUrls.cs index c4481cebd..075467818 100644 --- a/src/FilterLists.Agent/Core/Entities/MaintainerUrls.cs +++ b/src/FilterLists.Agent/Core/Entities/MaintainerUrls.cs @@ -1,11 +1,11 @@ -using JetBrains.Annotations; +using System; +using JetBrains.Annotations; namespace FilterLists.Agent.Core.Entities { [UsedImplicitly] public class MaintainerUrls : IEntityUrls { - public int Id { get; set; } - public string HomeUrl { get; set; } + public Uri HomeUrl { get; set; } } } \ No newline at end of file diff --git a/src/FilterLists.Agent/Core/Entities/SoftwareUrls.cs b/src/FilterLists.Agent/Core/Entities/SoftwareUrls.cs index 21fb035cf..a813e0902 100644 --- a/src/FilterLists.Agent/Core/Entities/SoftwareUrls.cs +++ b/src/FilterLists.Agent/Core/Entities/SoftwareUrls.cs @@ -1,12 +1,12 @@ -using JetBrains.Annotations; +using System; +using JetBrains.Annotations; namespace FilterLists.Agent.Core.Entities { [UsedImplicitly] public class SoftwareUrls : IEntityUrls { - public int Id { get; set; } - public string DownloadUrl { get; set; } - public string HomeUrl { get; set; } + public Uri DownloadUrl { get; set; } + public Uri HomeUrl { get; set; } } } \ No newline at end of file diff --git a/src/FilterLists.Agent/Core/Entities/SyntaxUrls.cs b/src/FilterLists.Agent/Core/Entities/SyntaxUrls.cs index a0bb67274..e4330d2fa 100644 --- a/src/FilterLists.Agent/Core/Entities/SyntaxUrls.cs +++ b/src/FilterLists.Agent/Core/Entities/SyntaxUrls.cs @@ -1,11 +1,11 @@ -using JetBrains.Annotations; +using System; +using JetBrains.Annotations; namespace FilterLists.Agent.Core.Entities { [UsedImplicitly] public class SyntaxUrls : IEntityUrls { - public int Id { get; set; } - public string DefinitionUrl { get; set; } + public Uri DefinitionUrl { get; set; } } } \ No newline at end of file diff --git a/src/FilterLists.Agent/Core/Interfaces/IEntityUrlsRepository.cs b/src/FilterLists.Agent/Core/Interfaces/IEntityUrlsRepository.cs deleted file mode 100644 index d449a709b..000000000 --- a/src/FilterLists.Agent/Core/Interfaces/IEntityUrlsRepository.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using FilterLists.Agent.Core.Entities; - -namespace FilterLists.Agent.Core.Interfaces -{ - public interface IEntityUrlsRepository - { - Task> GetAllAsync() where TEntityUrls : IEntityUrls, new(); - } -} \ No newline at end of file diff --git a/src/FilterLists.Agent/Core/Interfaces/IUrlsRepository.cs b/src/FilterLists.Agent/Core/Interfaces/IUrlsRepository.cs new file mode 100644 index 000000000..cddf29725 --- /dev/null +++ b/src/FilterLists.Agent/Core/Interfaces/IUrlsRepository.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using FilterLists.Agent.Core.Entities; + +namespace FilterLists.Agent.Core.Interfaces +{ + public interface IUrlsRepository + { + Task> GetAllAsync() where TEntityUrls : IEntityUrls, new(); + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs b/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs index a8ce3adcd..8a3e2dd26 100644 --- a/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs +++ b/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs @@ -26,7 +26,7 @@ public static void RegisterAgentServices(this IServiceCollection services) services.AddHttpClient(); services.AddSingleton(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); } private static void AddConfiguration(this IServiceCollection services) diff --git a/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs b/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs index 6edc3fab3..f44325605 100644 --- a/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs +++ b/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs @@ -1,6 +1,8 @@ using System; using System.Threading; using System.Threading.Tasks; +using FilterLists.Agent.Core.Entities; +using FilterLists.Agent.Core.Interfaces; using MediatR; namespace FilterLists.Agent.Features.Urls @@ -14,14 +16,17 @@ public class Command : IRequest public class Handler : AsyncRequestHandler { private readonly IMediator _mediator; + private readonly IUrlsRepository _repo; - public Handler(IMediator mediator) + public Handler(IMediator mediator, IUrlsRepository urlsRepository) { _mediator = mediator; + _repo = urlsRepository; } protected override async Task Handle(Command request, CancellationToken cancellationToken) { + var listUrls = await _repo.GetAllAsync(); throw new NotImplementedException(); } } diff --git a/src/FilterLists.Agent/Infrastructure/Repositories/EntityUrlsRepository.cs b/src/FilterLists.Agent/Infrastructure/Repositories/UrlsRepository.cs similarity index 68% rename from src/FilterLists.Agent/Infrastructure/Repositories/EntityUrlsRepository.cs rename to src/FilterLists.Agent/Infrastructure/Repositories/UrlsRepository.cs index c6e1565bc..1e8984d04 100644 --- a/src/FilterLists.Agent/Infrastructure/Repositories/EntityUrlsRepository.cs +++ b/src/FilterLists.Agent/Infrastructure/Repositories/UrlsRepository.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using FilterLists.Agent.Core.Entities; using FilterLists.Agent.Core.Interfaces; @@ -7,20 +9,22 @@ namespace FilterLists.Agent.Infrastructure.Repositories { - public class EntityUrlsRepository : IEntityUrlsRepository + public class UrlsRepository : IUrlsRepository { private readonly IFilterListsApiClient _apiClient; - public EntityUrlsRepository(IFilterListsApiClient apiClient) + public UrlsRepository(IFilterListsApiClient apiClient) { _apiClient = apiClient; } - public async Task> GetAllAsync() where TEntityUrls : IEntityUrls, new() + public async Task> GetAllAsync() where TEntityUrls : IEntityUrls, new() { var endpoint = BuildEndpoint(); var request = new RestRequest(endpoint); - return await _apiClient.ExecuteAsync>(request); + var response = await _apiClient.ExecuteAsync>(request); + return response.SelectMany(r => r.GetType().GetProperties().Select(p => (Uri)p.GetValue(r))) + .Where(u => u != null); } private static string BuildEndpoint() where TEntityUrls : IEntityUrls, new() diff --git a/src/FilterLists.Agent/Program.cs b/src/FilterLists.Agent/Program.cs index 87ed7b8fe..5ae752efc 100644 --- a/src/FilterLists.Agent/Program.cs +++ b/src/FilterLists.Agent/Program.cs @@ -2,6 +2,7 @@ using System.Threading.Tasks; using FilterLists.Agent.Extensions; using FilterLists.Agent.Features.Lists; +using FilterLists.Agent.Features.Urls; using MediatR; using Microsoft.Extensions.DependencyInjection; @@ -16,6 +17,7 @@ public static async Task Main() BuildServiceProvider(); var mediator = _serviceProvider.GetService(); await mediator.Send(new CaptureLists.Command()); + await mediator.Send(new ValidateUrls.Command()); } private static void BuildServiceProvider()