diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 9afd29f7b..e0468c425 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,5 +1,17 @@ version: 2 updates: +- package-ecosystem: nuget + directory: "/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients" + schedule: + interval: daily + time: "11:00" + open-pull-requests-limit: 99 +- package-ecosystem: nuget + directory: "/services/SharedKernel/FilterLists.SharedKernel.Apis.Contracts" + schedule: + interval: daily + time: "11:00" + open-pull-requests-limit: 99 - package-ecosystem: nuget directory: "/services/SharedKernel/FilterLists.SharedKernel.Logging" schedule: diff --git a/services/Archival/FilterLists.Archival.Api/Dockerfile b/services/Archival/FilterLists.Archival.Api/Dockerfile index 8ba6e8627..f36aa4e90 100644 --- a/services/Archival/FilterLists.Archival.Api/Dockerfile +++ b/services/Archival/FilterLists.Archival.Api/Dockerfile @@ -9,6 +9,8 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=true # restore API WORKDIR /app +COPY SharedKernel/FilterLists.SharedKernel.Apis.Contracts/FilterLists.SharedKernel.Apis.Contracts.csproj SharedKernel/FilterLists.SharedKernel.Apis.Contracts/ +COPY SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj SharedKernel/FilterLists.SharedKernel.Apis.Clients/ COPY SharedKernel/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj SharedKernel/FilterLists.SharedKernel.Logging/ COPY Archival/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj Archival/FilterLists.Archival.Infrastructure/ COPY Archival/FilterLists.Archival.Application/FilterLists.Archival.Application.csproj Archival/FilterLists.Archival.Application/ @@ -18,6 +20,8 @@ RUN dotnet restore # build API WORKDIR /app +COPY SharedKernel/FilterLists.SharedKernel.Apis.Contracts/. SharedKernel/FilterLists.SharedKernel.Apis.Contracts/ +COPY SharedKernel/FilterLists.SharedKernel.Apis.Clients/. SharedKernel/FilterLists.SharedKernel.Apis.Clients/ COPY SharedKernel/FilterLists.SharedKernel.Logging/. SharedKernel/FilterLists.SharedKernel.Logging/ COPY Archival/FilterLists.Archival.Infrastructure/. Archival/FilterLists.Archival.Infrastructure/ COPY Archival/FilterLists.Archival.Application/. Archival/FilterLists.Archival.Application/ diff --git a/services/Archival/FilterLists.Archival.Api/Dockerfile.dev b/services/Archival/FilterLists.Archival.Api/Dockerfile.dev index c44c08048..d26c1b799 100644 --- a/services/Archival/FilterLists.Archival.Api/Dockerfile.dev +++ b/services/Archival/FilterLists.Archival.Api/Dockerfile.dev @@ -8,6 +8,8 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=true # restore API WORKDIR /app +COPY SharedKernel/FilterLists.SharedKernel.Apis.Contracts/FilterLists.SharedKernel.Apis.Contracts.csproj SharedKernel/FilterLists.SharedKernel.Apis.Contracts/ +COPY SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj SharedKernel/FilterLists.SharedKernel.Apis.Clients/ COPY SharedKernel/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj SharedKernel/FilterLists.SharedKernel.Logging/ COPY Archival/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj Archival/FilterLists.Archival.Infrastructure/ COPY Archival/FilterLists.Archival.Application/FilterLists.Archival.Application.csproj Archival/FilterLists.Archival.Application/ @@ -17,6 +19,8 @@ RUN dotnet restore # build API WORKDIR /app +COPY SharedKernel/FilterLists.SharedKernel.Apis.Contracts/. SharedKernel/FilterLists.SharedKernel.Apis.Contracts/ +COPY SharedKernel/FilterLists.SharedKernel.Apis.Clients/. SharedKernel/FilterLists.SharedKernel.Apis.Clients/ COPY SharedKernel/FilterLists.SharedKernel.Logging/. SharedKernel/FilterLists.SharedKernel.Logging/ COPY Archival/FilterLists.Archival.Infrastructure/. Archival/FilterLists.Archival.Infrastructure/ COPY Archival/FilterLists.Archival.Application/. Archival/FilterLists.Archival.Application/ diff --git a/services/Archival/FilterLists.Archival.Infrastructure/ConfigurationExtensions.cs b/services/Archival/FilterLists.Archival.Infrastructure/ConfigurationExtensions.cs index a4c5030c9..4797e0b1b 100644 --- a/services/Archival/FilterLists.Archival.Infrastructure/ConfigurationExtensions.cs +++ b/services/Archival/FilterLists.Archival.Infrastructure/ConfigurationExtensions.cs @@ -1,6 +1,7 @@ using System; using FilterLists.Archival.Infrastructure.Persistence; using FilterLists.Archival.Infrastructure.Scheduling; +using FilterLists.SharedKernel.Apis.Clients; using FilterLists.SharedKernel.Logging; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; @@ -21,8 +22,9 @@ public static void AddInfrastructureServices(this IServiceCollection services, I _ = configuration ?? throw new ArgumentNullException(nameof(configuration)); services.AddSharedKernelLogging(); - services.AddPersistenceServices(configuration); services.AddSchedulingServices(configuration); + services.AddApiClients(); + services.AddPersistenceServices(configuration); } public static void UseInfrastructure(this IApplicationBuilder app) diff --git a/services/Archival/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj b/services/Archival/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj index c05e1c0f6..f7e211158 100644 --- a/services/Archival/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj +++ b/services/Archival/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj @@ -39,6 +39,7 @@ + diff --git a/services/Directory/FilterLists.Directory.Api/Controllers/LanguagesController.cs b/services/Directory/FilterLists.Directory.Api/Controllers/LanguagesController.cs index aa19799f5..9ab3b196c 100644 --- a/services/Directory/FilterLists.Directory.Api/Controllers/LanguagesController.cs +++ b/services/Directory/FilterLists.Directory.Api/Controllers/LanguagesController.cs @@ -20,7 +20,7 @@ public LanguagesController(IMediator mediator) } [HttpGet] - [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] + [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] public async Task Get(CancellationToken cancellationToken) { return Ok(await _mediator.Send(new GetLanguages.Query(), cancellationToken)); diff --git a/services/Directory/FilterLists.Directory.Api/Controllers/LicensesController.cs b/services/Directory/FilterLists.Directory.Api/Controllers/LicensesController.cs index 5eff378b4..b7ed3373f 100644 --- a/services/Directory/FilterLists.Directory.Api/Controllers/LicensesController.cs +++ b/services/Directory/FilterLists.Directory.Api/Controllers/LicensesController.cs @@ -20,7 +20,7 @@ public LicensesController(IMediator mediator) } [HttpGet] - [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] + [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] public async Task Get(CancellationToken cancellationToken) { return Ok(await _mediator.Send(new GetLicenses.Query(), cancellationToken)); diff --git a/services/Directory/FilterLists.Directory.Api/Controllers/ListsController.cs b/services/Directory/FilterLists.Directory.Api/Controllers/ListsController.cs index bab5fc1de..6ea329d3f 100644 --- a/services/Directory/FilterLists.Directory.Api/Controllers/ListsController.cs +++ b/services/Directory/FilterLists.Directory.Api/Controllers/ListsController.cs @@ -3,6 +3,7 @@ using System.Threading; using System.Threading.Tasks; using FilterLists.Directory.Application.Queries; +using FilterLists.SharedKernel.Apis.Contracts.Directory; using MediatR; using Microsoft.AspNetCore.Mvc; @@ -20,14 +21,14 @@ public ListsController(IMediator mediator) } [HttpGet] - [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] + [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] public async Task Get(CancellationToken cancellationToken) { return Ok(await _mediator.Send(new GetLists.Query(), cancellationToken)); } [HttpGet("{id}")] - [ProducesResponseType(typeof(GetListDetails.ListViewModel), (int)HttpStatusCode.OK)] + [ProducesResponseType(typeof(ListDetailsVm), (int)HttpStatusCode.OK)] public async Task GetDetails(int id, CancellationToken cancellationToken) { return Ok(await _mediator.Send(new GetListDetails.Query(id), cancellationToken)); diff --git a/services/Directory/FilterLists.Directory.Api/Controllers/MaintainersController.cs b/services/Directory/FilterLists.Directory.Api/Controllers/MaintainersController.cs index db993afee..2e259a2f2 100644 --- a/services/Directory/FilterLists.Directory.Api/Controllers/MaintainersController.cs +++ b/services/Directory/FilterLists.Directory.Api/Controllers/MaintainersController.cs @@ -20,7 +20,7 @@ public MaintainersController(IMediator mediator) } [HttpGet] - [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] + [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] public async Task Get(CancellationToken cancellationToken) { return Ok(await _mediator.Send(new GetMaintainers.Query(), cancellationToken)); diff --git a/services/Directory/FilterLists.Directory.Api/Controllers/SoftwareController.cs b/services/Directory/FilterLists.Directory.Api/Controllers/SoftwareController.cs index 65a54dc16..fb08bc5ef 100644 --- a/services/Directory/FilterLists.Directory.Api/Controllers/SoftwareController.cs +++ b/services/Directory/FilterLists.Directory.Api/Controllers/SoftwareController.cs @@ -20,7 +20,7 @@ public SoftwareController(IMediator mediator) } [HttpGet] - [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] + [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] public async Task Get(CancellationToken cancellationToken) { return Ok(await _mediator.Send(new GetSoftware.Query(), cancellationToken)); diff --git a/services/Directory/FilterLists.Directory.Api/Controllers/SyntaxesController.cs b/services/Directory/FilterLists.Directory.Api/Controllers/SyntaxesController.cs index d9fcf3ae9..e6e869a7e 100644 --- a/services/Directory/FilterLists.Directory.Api/Controllers/SyntaxesController.cs +++ b/services/Directory/FilterLists.Directory.Api/Controllers/SyntaxesController.cs @@ -20,7 +20,7 @@ public SyntaxesController(IMediator mediator) } [HttpGet] - [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] + [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] public async Task Get(CancellationToken cancellationToken) { return Ok(await _mediator.Send(new GetSyntaxes.Query(), cancellationToken)); diff --git a/services/Directory/FilterLists.Directory.Api/Controllers/TagsController.cs b/services/Directory/FilterLists.Directory.Api/Controllers/TagsController.cs index 7cdda63d4..ecc660cd2 100644 --- a/services/Directory/FilterLists.Directory.Api/Controllers/TagsController.cs +++ b/services/Directory/FilterLists.Directory.Api/Controllers/TagsController.cs @@ -20,7 +20,7 @@ public TagsController(IMediator mediator) } [HttpGet] - [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] + [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] public async Task Get(CancellationToken cancellationToken) { return Ok(await _mediator.Send(new GetTags.Query(), cancellationToken)); diff --git a/services/Directory/FilterLists.Directory.Api/Dockerfile b/services/Directory/FilterLists.Directory.Api/Dockerfile index ec5c7f8a7..2be9a12a9 100644 --- a/services/Directory/FilterLists.Directory.Api/Dockerfile +++ b/services/Directory/FilterLists.Directory.Api/Dockerfile @@ -10,6 +10,7 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=true # restore API WORKDIR /app +COPY SharedKernel/FilterLists.SharedKernel.Apis.Contracts/FilterLists.SharedKernel.Apis.Contracts.csproj SharedKernel/FilterLists.SharedKernel.Apis.Contracts/ COPY SharedKernel/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj SharedKernel/FilterLists.SharedKernel.Logging/ COPY Directory/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj Directory/FilterLists.Directory.Domain/ COPY Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj Directory/FilterLists.Directory.Infrastructure/ @@ -21,6 +22,7 @@ RUN dotnet restore # build API WORKDIR /app +COPY SharedKernel/FilterLists.SharedKernel.Apis.Contracts/. SharedKernel/FilterLists.SharedKernel.Apis.Contracts/ COPY SharedKernel/FilterLists.SharedKernel.Logging/. SharedKernel/FilterLists.SharedKernel.Logging/ COPY Directory/FilterLists.Directory.Domain/. Directory/FilterLists.Directory.Domain/ COPY Directory/FilterLists.Directory.Infrastructure/. Directory/FilterLists.Directory.Infrastructure/ diff --git a/services/Directory/FilterLists.Directory.Api/Dockerfile.dev b/services/Directory/FilterLists.Directory.Api/Dockerfile.dev index ccfa99795..dde3e3c42 100644 --- a/services/Directory/FilterLists.Directory.Api/Dockerfile.dev +++ b/services/Directory/FilterLists.Directory.Api/Dockerfile.dev @@ -9,6 +9,7 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=true # restore API WORKDIR /app +COPY SharedKernel/FilterLists.SharedKernel.Apis.Contracts/FilterLists.SharedKernel.Apis.Contracts.csproj SharedKernel/FilterLists.SharedKernel.Apis.Contracts/ COPY SharedKernel/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj SharedKernel/FilterLists.SharedKernel.Logging/ COPY Directory/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj Directory/FilterLists.Directory.Domain/ COPY Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj Directory/FilterLists.Directory.Infrastructure/ @@ -20,6 +21,7 @@ RUN dotnet restore # build API WORKDIR /app +COPY SharedKernel/FilterLists.SharedKernel.Apis.Contracts/. SharedKernel/FilterLists.SharedKernel.Apis.Contracts/ COPY SharedKernel/FilterLists.SharedKernel.Logging/. SharedKernel/FilterLists.SharedKernel.Logging/ COPY Directory/FilterLists.Directory.Domain/. Directory/FilterLists.Directory.Domain/ COPY Directory/FilterLists.Directory.Infrastructure/. Directory/FilterLists.Directory.Infrastructure/ diff --git a/services/Directory/FilterLists.Directory.Application/Queries/GetLanguages.cs b/services/Directory/FilterLists.Directory.Application/Queries/GetLanguages.cs index 29866e88e..21d5b2eda 100644 --- a/services/Directory/FilterLists.Directory.Application/Queries/GetLanguages.cs +++ b/services/Directory/FilterLists.Directory.Application/Queries/GetLanguages.cs @@ -13,11 +13,11 @@ namespace FilterLists.Directory.Application.Queries { public static class GetLanguages { - public class Query : IRequest> + public class Query : IRequest> { } - public class Handler : IRequestHandler> + public class Handler : IRequestHandler> { private readonly IQueryContext _context; private readonly IMapper _mapper; @@ -28,30 +28,30 @@ public Handler(IQueryContext context, IMapper mapper) _mapper = mapper; } - public async Task> Handle( + public async Task> Handle( Query request, CancellationToken cancellationToken) { return await _context.Languages .Where(l => l.FilterListLanguages.Any()) .OrderBy(l => l.Iso6391) - .ProjectTo(_mapper.ConfigurationProvider) + .ProjectTo(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); } } - public class LicenseViewModelProfile : Profile + public class LanguageVmProfile : Profile { - public LicenseViewModelProfile() + public LanguageVmProfile() { - CreateMap() + CreateMap() .ForMember(l => l.FilterListIds, o => o.MapFrom(l => l.FilterListLanguages.Select(fll => fll.FilterListId).OrderBy(flid => flid))); } } - public class LanguageViewModel + public class LanguageVm { public string Iso6391 { get; private set; } = null!; public string Name { get; private set; } = null!; diff --git a/services/Directory/FilterLists.Directory.Application/Queries/GetLicenses.cs b/services/Directory/FilterLists.Directory.Application/Queries/GetLicenses.cs index d7f653da7..f8a3f72cf 100644 --- a/services/Directory/FilterLists.Directory.Application/Queries/GetLicenses.cs +++ b/services/Directory/FilterLists.Directory.Application/Queries/GetLicenses.cs @@ -14,11 +14,11 @@ namespace FilterLists.Directory.Application.Queries { public static class GetLicenses { - public class Query : IRequest> + public class Query : IRequest> { } - public class Handler : IRequestHandler> + public class Handler : IRequestHandler> { private readonly IQueryContext _context; private readonly IMapper _mapper; @@ -29,29 +29,29 @@ public Handler(IQueryContext context, IMapper mapper) _mapper = mapper; } - public async Task> Handle( + public async Task> Handle( Query request, CancellationToken cancellationToken) { return await _context.Licenses .OrderBy(l => l.Id) - .ProjectTo(_mapper.ConfigurationProvider) + .ProjectTo(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); } } - public class LicenseViewModelProfile : Profile + public class LicenseVmProfile : Profile { - public LicenseViewModelProfile() + public LicenseVmProfile() { - CreateMap() + CreateMap() .ForMember(l => l.FilterListIds, o => o.MapFrom(l => l.FilterLists.Select(fl => fl.Id).OrderBy(flid => flid))); } } - public class LicenseViewModel + public class LicenseVm { public int Id { get; private set; } public string Name { get; private set; } = null!; diff --git a/services/Directory/FilterLists.Directory.Application/Queries/GetListDetails.cs b/services/Directory/FilterLists.Directory.Application/Queries/GetListDetails.cs index d4dc824c4..a5f3582ad 100644 --- a/services/Directory/FilterLists.Directory.Application/Queries/GetListDetails.cs +++ b/services/Directory/FilterLists.Directory.Application/Queries/GetListDetails.cs @@ -1,12 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Linq; using System.Threading; using System.Threading.Tasks; using AutoMapper; using AutoMapper.QueryableExtensions; using FilterLists.Directory.Infrastructure.Persistence.Queries.Context; using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; +using FilterLists.SharedKernel.Apis.Contracts.Directory; using MediatR; using Microsoft.EntityFrameworkCore; @@ -14,7 +13,7 @@ namespace FilterLists.Directory.Application.Queries { public static class GetListDetails { - public class Query : IRequest + public class Query : IRequest { public Query(int id) { @@ -24,7 +23,7 @@ public Query(int id) public int Id { get; } } - public class Handler : IRequestHandler + public class Handler : IRequestHandler { private readonly IQueryContext _context; private readonly IMapper _mapper; @@ -35,21 +34,21 @@ public Handler(IQueryContext context, IMapper mapper) _mapper = mapper; } - public async Task Handle( + public async Task Handle( Query request, CancellationToken cancellationToken) { return await _context.FilterLists - .ProjectTo(_mapper.ConfigurationProvider) + .ProjectTo(_mapper.ConfigurationProvider) .SingleOrDefaultAsync(fl => fl.Id == request.Id, cancellationToken); } } - public class ListViewModelProfile : Profile + public class ListDetailsVmProfile : Profile { - public ListViewModelProfile() + public ListDetailsVmProfile() { - CreateMap() + CreateMap() .ForMember(fl => fl.SyntaxIds, o => o.MapFrom(fl => fl.FilterListSyntaxes.Select(fls => fls.SyntaxId).OrderBy(sid => sid))) @@ -86,47 +85,12 @@ public ListViewModelProfile() } } - public class ViewUrlViewModelProfile : Profile + public class ListDetailsViewUrlVmProfile : Profile { - public ViewUrlViewModelProfile() + public ListDetailsViewUrlVmProfile() { - CreateMap(); + CreateMap(); } } - - public class ListViewModel - { - public int Id { get; private set; } - public string Name { get; private set; } = null!; - public string? Description { get; private set; } - public int? LicenseId { get; private set; } - public IEnumerable? SyntaxIds { get; private set; } - public IEnumerable? Iso6391s { get; private set; } - public IEnumerable? TagIds { get; private set; } - public IEnumerable? ViewUrls { get; private set; } - public Uri? HomeUrl { get; private set; } - public Uri? OnionUrl { get; private set; } - public Uri? PolicyUrl { get; private set; } - public Uri? SubmissionUrl { get; private set; } - public Uri? IssuesUrl { get; private set; } - public Uri? ForumUrl { get; private set; } - public Uri? ChatUrl { get; private set; } - public string? EmailAddress { get; private set; } - public Uri? DonateUrl { get; private set; } - public IEnumerable? MaintainerIds { get; private set; } - public IEnumerable? UpstreamFilterListIds { get; private set; } - public IEnumerable? ForkFilterListIds { get; private set; } - public IEnumerable? IncludedInFilterListIds { get; private set; } - public IEnumerable? IncludesFilterListIds { get; private set; } - public IEnumerable? DependencyFilterListIds { get; private set; } - public IEnumerable? DependentFilterListIds { get; private set; } - } - - public class ViewUrlViewModel - { - public short SegmentNumber { get; private set; } - public short Primariness { get; private set; } - public Uri Url { get; private set; } = null!; - } } } \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Application/Queries/GetLists.cs b/services/Directory/FilterLists.Directory.Application/Queries/GetLists.cs index edf70afbf..10a0218e3 100644 --- a/services/Directory/FilterLists.Directory.Application/Queries/GetLists.cs +++ b/services/Directory/FilterLists.Directory.Application/Queries/GetLists.cs @@ -13,11 +13,11 @@ namespace FilterLists.Directory.Application.Queries { public static class GetLists { - public class Query : IRequest> + public class Query : IRequest> { } - public class Handler : IRequestHandler> + public class Handler : IRequestHandler> { private readonly IQueryContext _context; private readonly IMapper _mapper; @@ -28,22 +28,22 @@ public Handler(IQueryContext context, IMapper mapper) _mapper = mapper; } - public async Task> Handle( + public async Task> Handle( Query request, CancellationToken cancellationToken) { return await _context.FilterLists .OrderBy(fl => fl.Id) - .ProjectTo(_mapper.ConfigurationProvider) + .ProjectTo(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); } } - public class ListViewModelProfile : Profile + public class ListVmProfile : Profile { - public ListViewModelProfile() + public ListVmProfile() { - CreateMap() + CreateMap() .ForMember(fl => fl.SyntaxIds, o => o.MapFrom(fl => fl.FilterListSyntaxes.Select(fls => fls.SyntaxId).OrderBy(sid => sid))) @@ -59,7 +59,7 @@ public ListViewModelProfile() } } - public class ListViewModel + public class ListVm { public int Id { get; private set; } public string Name { get; private set; } = null!; diff --git a/services/Directory/FilterLists.Directory.Application/Queries/GetMaintainers.cs b/services/Directory/FilterLists.Directory.Application/Queries/GetMaintainers.cs index 2bd1f4f7e..7d1879636 100644 --- a/services/Directory/FilterLists.Directory.Application/Queries/GetMaintainers.cs +++ b/services/Directory/FilterLists.Directory.Application/Queries/GetMaintainers.cs @@ -14,11 +14,11 @@ namespace FilterLists.Directory.Application.Queries { public static class GetMaintainers { - public class Query : IRequest> + public class Query : IRequest> { } - public class Handler : IRequestHandler> + public class Handler : IRequestHandler> { private readonly IQueryContext _context; private readonly IMapper _mapper; @@ -29,29 +29,29 @@ public Handler(IQueryContext context, IMapper mapper) _mapper = mapper; } - public async Task> Handle( + public async Task> Handle( Query request, CancellationToken cancellationToken) { return await _context.Maintainers .OrderBy(m => m.Id) - .ProjectTo(_mapper.ConfigurationProvider) + .ProjectTo(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); } } - public class MaintainerViewModelProfile : Profile + public class MaintainerVmProfile : Profile { - public MaintainerViewModelProfile() + public MaintainerVmProfile() { - CreateMap() + CreateMap() .ForMember(m => m.FilterListIds, o => o.MapFrom(m => m.FilterListMaintainers.Select(flm => flm.FilterListId).OrderBy(flid => flid))); } } - public class MaintainerViewModel + public class MaintainerVm { public int Id { get; private set; } public string Name { get; private set; } = null!; diff --git a/services/Directory/FilterLists.Directory.Application/Queries/GetSoftware.cs b/services/Directory/FilterLists.Directory.Application/Queries/GetSoftware.cs index 13ea20828..77396cac3 100644 --- a/services/Directory/FilterLists.Directory.Application/Queries/GetSoftware.cs +++ b/services/Directory/FilterLists.Directory.Application/Queries/GetSoftware.cs @@ -14,11 +14,11 @@ namespace FilterLists.Directory.Application.Queries { public static class GetSoftware { - public class Query : IRequest> + public class Query : IRequest> { } - public class Handler : IRequestHandler> + public class Handler : IRequestHandler> { private readonly IQueryContext _context; private readonly IMapper _mapper; @@ -29,29 +29,29 @@ public Handler(IQueryContext context, IMapper mapper) _mapper = mapper; } - public async Task> Handle( + public async Task> Handle( Query request, CancellationToken cancellationToken) { return await _context.Software .OrderBy(s => s.Id) - .ProjectTo(_mapper.ConfigurationProvider) + .ProjectTo(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); } } - public class SoftwareViewModelProfile : Profile + public class SoftwareVmProfile : Profile { - public SoftwareViewModelProfile() + public SoftwareVmProfile() { - CreateMap() + CreateMap() .ForMember(s => s.SyntaxIds, o => o.MapFrom(s => s.SoftwareSyntaxes.Select(ss => ss.SyntaxId).OrderBy(sid => sid))); } } - public class SoftwareViewModel + public class SoftwareVm { public int Id { get; private set; } public string Name { get; private set; } = null!; diff --git a/services/Directory/FilterLists.Directory.Application/Queries/GetSyntaxes.cs b/services/Directory/FilterLists.Directory.Application/Queries/GetSyntaxes.cs index 821a1acb0..5981e2c7f 100644 --- a/services/Directory/FilterLists.Directory.Application/Queries/GetSyntaxes.cs +++ b/services/Directory/FilterLists.Directory.Application/Queries/GetSyntaxes.cs @@ -14,11 +14,11 @@ namespace FilterLists.Directory.Application.Queries { public static class GetSyntaxes { - public class Query : IRequest> + public class Query : IRequest> { } - public class Handler : IRequestHandler> + public class Handler : IRequestHandler> { private readonly IQueryContext _context; private readonly IMapper _mapper; @@ -29,22 +29,22 @@ public Handler(IQueryContext context, IMapper mapper) _mapper = mapper; } - public async Task> Handle( + public async Task> Handle( Query request, CancellationToken cancellationToken) { return await _context.Syntaxes .OrderBy(s => s.Id) - .ProjectTo(_mapper.ConfigurationProvider) + .ProjectTo(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); } } - public class SyntaxViewModelProfile : Profile + public class SyntaxVmProfile : Profile { - public SyntaxViewModelProfile() + public SyntaxVmProfile() { - CreateMap() + CreateMap() .ForMember(s => s.FilterListIds, o => o.MapFrom(s => s.FilterListSyntaxes.Select(sls => sls.FilterListId).OrderBy(flid => flid))) @@ -54,7 +54,7 @@ public SyntaxViewModelProfile() } } - public class SyntaxViewModel + public class SyntaxVm { public int Id { get; private set; } public string Name { get; private set; } = null!; diff --git a/services/Directory/FilterLists.Directory.Application/Queries/GetTags.cs b/services/Directory/FilterLists.Directory.Application/Queries/GetTags.cs index 4e083abe5..b83216afc 100644 --- a/services/Directory/FilterLists.Directory.Application/Queries/GetTags.cs +++ b/services/Directory/FilterLists.Directory.Application/Queries/GetTags.cs @@ -13,11 +13,11 @@ namespace FilterLists.Directory.Application.Queries { public static class GetTags { - public class Query : IRequest> + public class Query : IRequest> { } - public class Handler : IRequestHandler> + public class Handler : IRequestHandler> { private readonly IQueryContext _context; private readonly IMapper _mapper; @@ -28,29 +28,29 @@ public Handler(IQueryContext context, IMapper mapper) _mapper = mapper; } - public async Task> Handle( + public async Task> Handle( Query request, CancellationToken cancellationToken) { return await _context.Tags .OrderBy(t => t.Id) - .ProjectTo(_mapper.ConfigurationProvider) + .ProjectTo(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); } } - public class TagViewModelProfile : Profile + public class TagVmProfile : Profile { - public TagViewModelProfile() + public TagVmProfile() { - CreateMap() + CreateMap() .ForMember(t => t.FilterListIds, o => o.MapFrom(t => t.FilterListTags.Select(flt => flt.FilterListId).OrderBy(flid => flid))); } } - public class TagViewModel + public class TagVm { public int Id { get; private set; } public string Name { get; private set; } = null!; diff --git a/services/Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj b/services/Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj index 9e89977ff..b80b23a6d 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj +++ b/services/Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj @@ -34,6 +34,7 @@ + diff --git a/services/FilterLists.sln b/services/FilterLists.sln index 483670f72..75ef2f749 100644 --- a/services/FilterLists.sln +++ b/services/FilterLists.sln @@ -60,7 +60,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.Archival.Infras EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SharedKernel", "SharedKernel", "{59197818-6C72-4A3C-A595-49F3D7D2EB18}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.SharedKernel.Logging", "SharedKernel\FilterLists.SharedKernel.Logging\FilterLists.SharedKernel.Logging.csproj", "{5485F55E-DFED-4DA0-8A00-220B081FAC96}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.SharedKernel.Logging", "SharedKernel\FilterLists.SharedKernel.Logging\FilterLists.SharedKernel.Logging.csproj", "{5485F55E-DFED-4DA0-8A00-220B081FAC96}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.SharedKernel.Apis.Contracts", "SharedKernel\FilterLists.SharedKernel.Apis.Contracts\FilterLists.SharedKernel.Apis.Contracts.csproj", "{D8B65709-B68E-42D6-8500-68EE309177D5}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.SharedKernel.Apis.Clients", "SharedKernel\FilterLists.SharedKernel.Apis.Clients\FilterLists.SharedKernel.Apis.Clients.csproj", "{FF6F3D83-A96C-412C-BAFF-63BA89ADD31F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -112,6 +116,14 @@ Global {5485F55E-DFED-4DA0-8A00-220B081FAC96}.Debug|Any CPU.Build.0 = Debug|Any CPU {5485F55E-DFED-4DA0-8A00-220B081FAC96}.Release|Any CPU.ActiveCfg = Release|Any CPU {5485F55E-DFED-4DA0-8A00-220B081FAC96}.Release|Any CPU.Build.0 = Release|Any CPU + {D8B65709-B68E-42D6-8500-68EE309177D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D8B65709-B68E-42D6-8500-68EE309177D5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D8B65709-B68E-42D6-8500-68EE309177D5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D8B65709-B68E-42D6-8500-68EE309177D5}.Release|Any CPU.Build.0 = Release|Any CPU + {FF6F3D83-A96C-412C-BAFF-63BA89ADD31F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FF6F3D83-A96C-412C-BAFF-63BA89ADD31F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FF6F3D83-A96C-412C-BAFF-63BA89ADD31F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FF6F3D83-A96C-412C-BAFF-63BA89ADD31F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -128,6 +140,8 @@ Global {11669839-E666-477B-A1B6-276041AD3768} = {5E52FEF9-9605-4ACB-8A42-A20E06331599} {A0B77015-E8C4-41D3-B63D-BF818026298C} = {5E52FEF9-9605-4ACB-8A42-A20E06331599} {5485F55E-DFED-4DA0-8A00-220B081FAC96} = {59197818-6C72-4A3C-A595-49F3D7D2EB18} + {D8B65709-B68E-42D6-8500-68EE309177D5} = {59197818-6C72-4A3C-A595-49F3D7D2EB18} + {FF6F3D83-A96C-412C-BAFF-63BA89ADD31F} = {59197818-6C72-4A3C-A595-49F3D7D2EB18} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {758B57EF-7505-4BE2-90A2-E2DE2EC32909} diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs new file mode 100644 index 000000000..d9a570253 --- /dev/null +++ b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs @@ -0,0 +1,13 @@ +using Microsoft.Extensions.DependencyInjection; +using RestSharp; + +namespace FilterLists.SharedKernel.Apis.Clients +{ + public static class ConfigurationExtensions + { + public static void AddApiClients(this IServiceCollection services) + { + services.AddTransient(); + } + } +} \ No newline at end of file diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj new file mode 100644 index 000000000..c05a1a4fe --- /dev/null +++ b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj @@ -0,0 +1,40 @@ + + + + netstandard2.1 + latest + enable + + + + Collin M. Barrett + FilterLists + FilterLists Shared Kernel API Clients + The independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances. + Copyright (c) 2020 Collin M. Barrett + https://github.com/collinbarrett/FilterLists + https://filterlists.com + + + + 1701;1702;CA2007 + + + + CA2007 + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + \ No newline at end of file diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Contracts/Directory/ListDetailsVm.cs b/services/SharedKernel/FilterLists.SharedKernel.Apis.Contracts/Directory/ListDetailsVm.cs new file mode 100644 index 000000000..43dd0af0c --- /dev/null +++ b/services/SharedKernel/FilterLists.SharedKernel.Apis.Contracts/Directory/ListDetailsVm.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; + +namespace FilterLists.SharedKernel.Apis.Contracts.Directory +{ + public class ListDetailsVm + { + public int Id { get; private set; } + public string Name { get; private set; } = null!; + public string? Description { get; private set; } + public int? LicenseId { get; private set; } + public IEnumerable? SyntaxIds { get; private set; } + public IEnumerable? Iso6391s { get; private set; } + public IEnumerable? TagIds { get; private set; } + public IEnumerable? ViewUrls { get; private set; } + public Uri? HomeUrl { get; private set; } + public Uri? OnionUrl { get; private set; } + public Uri? PolicyUrl { get; private set; } + public Uri? SubmissionUrl { get; private set; } + public Uri? IssuesUrl { get; private set; } + public Uri? ForumUrl { get; private set; } + public Uri? ChatUrl { get; private set; } + public string? EmailAddress { get; private set; } + public Uri? DonateUrl { get; private set; } + public IEnumerable? MaintainerIds { get; private set; } + public IEnumerable? UpstreamFilterListIds { get; private set; } + public IEnumerable? ForkFilterListIds { get; private set; } + public IEnumerable? IncludedInFilterListIds { get; private set; } + public IEnumerable? IncludesFilterListIds { get; private set; } + public IEnumerable? DependencyFilterListIds { get; private set; } + public IEnumerable? DependentFilterListIds { get; private set; } + } + + public class ListDetailsViewUrlVm + { + public short SegmentNumber { get; private set; } + public short Primariness { get; private set; } + public Uri Url { get; private set; } = null!; + } +} \ No newline at end of file diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Contracts/FilterLists.SharedKernel.Apis.Contracts.csproj b/services/SharedKernel/FilterLists.SharedKernel.Apis.Contracts/FilterLists.SharedKernel.Apis.Contracts.csproj new file mode 100644 index 000000000..1eb6e1ec3 --- /dev/null +++ b/services/SharedKernel/FilterLists.SharedKernel.Apis.Contracts/FilterLists.SharedKernel.Apis.Contracts.csproj @@ -0,0 +1,30 @@ + + + + netstandard2.1 + latest + enable + + + + Collin M. Barrett + FilterLists + FilterLists Shared Kernel API Contracts + The independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances. + Copyright (c) 2020 Collin M. Barrett + https://github.com/collinbarrett/FilterLists + https://filterlists.com + + + + 1701;1702 + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + \ No newline at end of file