From 4dcbdb3e896010d0cd791832bbf6c44bd39adcc8 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Mon, 1 Jul 2019 11:11:51 -0500 Subject: [PATCH] get urls to validate from API --- .../Core/Entities/IEntityUrls.cs | 6 +++ .../Core/Entities/LicenseUrls.cs | 12 ++++++ .../Core/Entities/ListUrls.cs | 22 ++++++++++ .../Core/Entities/MaintainerUrls.cs | 11 +++++ .../Core/Entities/SoftwareUrls.cs | 12 ++++++ .../Core/Entities/SyntaxUrls.cs | 11 +++++ .../Core/Interfaces/IEntityUrlsRepository.cs | 11 +++++ .../Extensions/ServiceCollectionExtensions.cs | 1 + .../{Archiver => Lists}/CaptureLists.cs | 2 +- .../{Archiver => Lists}/CommitLists.cs | 2 +- .../{Archiver => Lists}/DownloadLists.cs | 2 +- .../{Archiver => Lists}/DownloadRawText.cs | 2 +- .../{Archiver => Lists}/DownloadSevenZip.cs | 2 +- .../{Archiver => Lists}/DownloadZip.cs | 2 +- .../Features/Urls/ValidateUrls.cs | 29 +++++++++++++ .../Repositories/EntityUrlsRepository.cs | 41 +++++++++++++++++++ 16 files changed, 162 insertions(+), 6 deletions(-) create mode 100644 src/FilterLists.Agent/Core/Entities/IEntityUrls.cs create mode 100644 src/FilterLists.Agent/Core/Entities/LicenseUrls.cs create mode 100644 src/FilterLists.Agent/Core/Entities/ListUrls.cs create mode 100644 src/FilterLists.Agent/Core/Entities/MaintainerUrls.cs create mode 100644 src/FilterLists.Agent/Core/Entities/SoftwareUrls.cs create mode 100644 src/FilterLists.Agent/Core/Entities/SyntaxUrls.cs create mode 100644 src/FilterLists.Agent/Core/Interfaces/IEntityUrlsRepository.cs rename src/FilterLists.Agent/Features/{Archiver => Lists}/CaptureLists.cs (95%) rename src/FilterLists.Agent/Features/{Archiver => Lists}/CommitLists.cs (96%) rename src/FilterLists.Agent/Features/{Archiver => Lists}/DownloadLists.cs (99%) rename src/FilterLists.Agent/Features/{Archiver => Lists}/DownloadRawText.cs (97%) rename src/FilterLists.Agent/Features/{Archiver => Lists}/DownloadSevenZip.cs (97%) rename src/FilterLists.Agent/Features/{Archiver => Lists}/DownloadZip.cs (97%) create mode 100644 src/FilterLists.Agent/Features/Urls/ValidateUrls.cs create mode 100644 src/FilterLists.Agent/Infrastructure/Repositories/EntityUrlsRepository.cs diff --git a/src/FilterLists.Agent/Core/Entities/IEntityUrls.cs b/src/FilterLists.Agent/Core/Entities/IEntityUrls.cs new file mode 100644 index 000000000..a89681c65 --- /dev/null +++ b/src/FilterLists.Agent/Core/Entities/IEntityUrls.cs @@ -0,0 +1,6 @@ +namespace FilterLists.Agent.Core.Entities +{ + public interface IEntityUrls + { + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/Core/Entities/LicenseUrls.cs b/src/FilterLists.Agent/Core/Entities/LicenseUrls.cs new file mode 100644 index 000000000..680514458 --- /dev/null +++ b/src/FilterLists.Agent/Core/Entities/LicenseUrls.cs @@ -0,0 +1,12 @@ +using System; +using JetBrains.Annotations; + +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 new file mode 100644 index 000000000..00b4c0c1e --- /dev/null +++ b/src/FilterLists.Agent/Core/Entities/ListUrls.cs @@ -0,0 +1,22 @@ +using System; +using JetBrains.Annotations; + +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; } + public Uri ForumUrl { get; private set; } + public Uri HomeUrl { get; private set; } + public Uri IssuesUrl { get; private set; } + public Uri PolicyUrl { get; private set; } + public Uri SubmissionUrl { get; private set; } + public Uri ViewUrl { get; private set; } + public Uri ViewUrlMirror1 { get; private set; } + public Uri ViewUrlMirror2 { get; private set; } + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/Core/Entities/MaintainerUrls.cs b/src/FilterLists.Agent/Core/Entities/MaintainerUrls.cs new file mode 100644 index 000000000..c4481cebd --- /dev/null +++ b/src/FilterLists.Agent/Core/Entities/MaintainerUrls.cs @@ -0,0 +1,11 @@ +using JetBrains.Annotations; + +namespace FilterLists.Agent.Core.Entities +{ + [UsedImplicitly] + public class MaintainerUrls : IEntityUrls + { + public int Id { get; set; } + public string 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 new file mode 100644 index 000000000..21fb035cf --- /dev/null +++ b/src/FilterLists.Agent/Core/Entities/SoftwareUrls.cs @@ -0,0 +1,12 @@ +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; } + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/Core/Entities/SyntaxUrls.cs b/src/FilterLists.Agent/Core/Entities/SyntaxUrls.cs new file mode 100644 index 000000000..a0bb67274 --- /dev/null +++ b/src/FilterLists.Agent/Core/Entities/SyntaxUrls.cs @@ -0,0 +1,11 @@ +using JetBrains.Annotations; + +namespace FilterLists.Agent.Core.Entities +{ + [UsedImplicitly] + public class SyntaxUrls : IEntityUrls + { + public int Id { get; set; } + public string 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 new file mode 100644 index 000000000..d449a709b --- /dev/null +++ b/src/FilterLists.Agent/Core/Interfaces/IEntityUrlsRepository.cs @@ -0,0 +1,11 @@ +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/Extensions/ServiceCollectionExtensions.cs b/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs index ade321aea..a8ce3adcd 100644 --- a/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs +++ b/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs @@ -26,6 +26,7 @@ public static void RegisterAgentServices(this IServiceCollection services) services.AddHttpClient(); services.AddSingleton(); services.AddTransient(); + services.AddTransient(); } private static void AddConfiguration(this IServiceCollection services) diff --git a/src/FilterLists.Agent/Features/Archiver/CaptureLists.cs b/src/FilterLists.Agent/Features/Lists/CaptureLists.cs similarity index 95% rename from src/FilterLists.Agent/Features/Archiver/CaptureLists.cs rename to src/FilterLists.Agent/Features/Lists/CaptureLists.cs index 842a387b4..bcc8bdde3 100644 --- a/src/FilterLists.Agent/Features/Archiver/CaptureLists.cs +++ b/src/FilterLists.Agent/Features/Lists/CaptureLists.cs @@ -3,7 +3,7 @@ using FilterLists.Agent.Core.Interfaces; using MediatR; -namespace FilterLists.Agent.Features.Archiver +namespace FilterLists.Agent.Features.Lists { public static class CaptureLists { diff --git a/src/FilterLists.Agent/Features/Archiver/CommitLists.cs b/src/FilterLists.Agent/Features/Lists/CommitLists.cs similarity index 96% rename from src/FilterLists.Agent/Features/Archiver/CommitLists.cs rename to src/FilterLists.Agent/Features/Lists/CommitLists.cs index a56d84060..6e80ef16f 100644 --- a/src/FilterLists.Agent/Features/Archiver/CommitLists.cs +++ b/src/FilterLists.Agent/Features/Lists/CommitLists.cs @@ -2,7 +2,7 @@ using LibGit2Sharp; using MediatR; -namespace FilterLists.Agent.Features.Archiver +namespace FilterLists.Agent.Features.Lists { public static class CommitLists { diff --git a/src/FilterLists.Agent/Features/Archiver/DownloadLists.cs b/src/FilterLists.Agent/Features/Lists/DownloadLists.cs similarity index 99% rename from src/FilterLists.Agent/Features/Archiver/DownloadLists.cs rename to src/FilterLists.Agent/Features/Lists/DownloadLists.cs index 8859590f7..57d6a8aa2 100644 --- a/src/FilterLists.Agent/Features/Archiver/DownloadLists.cs +++ b/src/FilterLists.Agent/Features/Lists/DownloadLists.cs @@ -9,7 +9,7 @@ using MediatR; using Microsoft.Extensions.Logging; -namespace FilterLists.Agent.Features.Archiver +namespace FilterLists.Agent.Features.Lists { public static class DownloadLists { diff --git a/src/FilterLists.Agent/Features/Archiver/DownloadRawText.cs b/src/FilterLists.Agent/Features/Lists/DownloadRawText.cs similarity index 97% rename from src/FilterLists.Agent/Features/Archiver/DownloadRawText.cs rename to src/FilterLists.Agent/Features/Lists/DownloadRawText.cs index 4211279e7..3b763cf9c 100644 --- a/src/FilterLists.Agent/Features/Archiver/DownloadRawText.cs +++ b/src/FilterLists.Agent/Features/Lists/DownloadRawText.cs @@ -8,7 +8,7 @@ using FilterLists.Agent.Infrastructure.Clients; using MediatR; -namespace FilterLists.Agent.Features.Archiver +namespace FilterLists.Agent.Features.Lists { public static class DownloadRawText { diff --git a/src/FilterLists.Agent/Features/Archiver/DownloadSevenZip.cs b/src/FilterLists.Agent/Features/Lists/DownloadSevenZip.cs similarity index 97% rename from src/FilterLists.Agent/Features/Archiver/DownloadSevenZip.cs rename to src/FilterLists.Agent/Features/Lists/DownloadSevenZip.cs index 69044daff..546dff0a3 100644 --- a/src/FilterLists.Agent/Features/Archiver/DownloadSevenZip.cs +++ b/src/FilterLists.Agent/Features/Lists/DownloadSevenZip.cs @@ -9,7 +9,7 @@ using SharpCompress.Archives.SevenZip; using SharpCompress.Common; -namespace FilterLists.Agent.Features.Archiver +namespace FilterLists.Agent.Features.Lists { public static class DownloadSevenZip { diff --git a/src/FilterLists.Agent/Features/Archiver/DownloadZip.cs b/src/FilterLists.Agent/Features/Lists/DownloadZip.cs similarity index 97% rename from src/FilterLists.Agent/Features/Archiver/DownloadZip.cs rename to src/FilterLists.Agent/Features/Lists/DownloadZip.cs index cb1d9cf6a..b8ef012bf 100644 --- a/src/FilterLists.Agent/Features/Archiver/DownloadZip.cs +++ b/src/FilterLists.Agent/Features/Lists/DownloadZip.cs @@ -8,7 +8,7 @@ using SharpCompress.Common; using SharpCompress.Readers; -namespace FilterLists.Agent.Features.Archiver +namespace FilterLists.Agent.Features.Lists { public static class DownloadZip { diff --git a/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs b/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs new file mode 100644 index 000000000..6edc3fab3 --- /dev/null +++ b/src/FilterLists.Agent/Features/Urls/ValidateUrls.cs @@ -0,0 +1,29 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using MediatR; + +namespace FilterLists.Agent.Features.Urls +{ + public static class ValidateUrls + { + public class Command : IRequest + { + } + + public class Handler : AsyncRequestHandler + { + private readonly IMediator _mediator; + + public Handler(IMediator mediator) + { + _mediator = mediator; + } + + protected override async Task Handle(Command request, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } + } + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/Infrastructure/Repositories/EntityUrlsRepository.cs b/src/FilterLists.Agent/Infrastructure/Repositories/EntityUrlsRepository.cs new file mode 100644 index 000000000..c6c491ff4 --- /dev/null +++ b/src/FilterLists.Agent/Infrastructure/Repositories/EntityUrlsRepository.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using FilterLists.Agent.Core.Entities; +using FilterLists.Agent.Core.Interfaces; +using FilterLists.Agent.Infrastructure.Clients; +using RestSharp; + +namespace FilterLists.Agent.Infrastructure.Repositories +{ + public class EntityUrlsRepository : IEntityUrlsRepository + { + private readonly IFilterListsApiClient _apiClient; + + public EntityUrlsRepository(IFilterListsApiClient apiClient) + { + _apiClient = apiClient; + } + + public async Task> GetAllAsync() + where TEntityUrls : IEntityUrls, new() + { + string entityEndpoint; + switch (typeof(TEntityUrls).Name) + { + case nameof(SyntaxUrls): + entityEndpoint = typeof(TEntityUrls).Name.Replace("Urls", "es").ToLowerInvariant(); + break; + case nameof(SoftwareUrls): + entityEndpoint = typeof(TEntityUrls).Name.Replace("Urls", "").ToLowerInvariant(); + break; + default: + entityEndpoint = typeof(TEntityUrls).Name.Replace("Urls", "s").ToLowerInvariant(); + break; + } + + var endpoint = $"{entityEndpoint}/seed"; + var request = new RestRequest(endpoint); + return await _apiClient.ExecuteAsync>(request); + } + } +} \ No newline at end of file