From 168dff5f60ab231129eea7a9b6dc4555ffd6e19d Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Tue, 5 Aug 2025 14:09:41 +0200 Subject: [PATCH] feat(DirectorySearchQuery): integrate auto-mapper. - configure automapper --- .../DependencyInjection.cs | 8 ++++++++ .../DigitalData.ActiveDirectory.csproj | 4 ++-- .../DirectorySearchQuery.cs | 19 +++++++++---------- .../MappingProfile.cs | 13 +++++++++++++ 4 files changed, 32 insertions(+), 12 deletions(-) create mode 100644 src/DigitalData.ActiveDirectory/MappingProfile.cs diff --git a/src/DigitalData.ActiveDirectory/DependencyInjection.cs b/src/DigitalData.ActiveDirectory/DependencyInjection.cs index 87f5df7..45045c5 100644 --- a/src/DigitalData.ActiveDirectory/DependencyInjection.cs +++ b/src/DigitalData.ActiveDirectory/DependencyInjection.cs @@ -16,6 +16,14 @@ public static class DependencyInjection cfg.LicenseKey = cOptions.MediatRLicenseKey; }); + services.AddAutoMapper(cfg => + { +#if NET8_0_OR_GREATER + cfg.LicenseKey = cOptions.MediatRLicenseKey; +#endif + cfg.AddMaps(typeof(DependencyInjection).Assembly); + }); + if (!cOptions.IsADConfigured) services.Configure(_ => { }); diff --git a/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj b/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj index 482e203..d71eeb0 100644 --- a/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj +++ b/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj @@ -27,7 +27,7 @@ - + @@ -38,7 +38,7 @@ - + diff --git a/src/DigitalData.ActiveDirectory/DirectorySearchQuery.cs b/src/DigitalData.ActiveDirectory/DirectorySearchQuery.cs index d9f3978..b4c1487 100644 --- a/src/DigitalData.ActiveDirectory/DirectorySearchQuery.cs +++ b/src/DigitalData.ActiveDirectory/DirectorySearchQuery.cs @@ -1,4 +1,5 @@ -using DigitalData.Core.Exceptions; +using AutoMapper; +using DigitalData.Core.Exceptions; using MediatR; using Microsoft.Extensions.Options; using System.DirectoryServices; @@ -16,9 +17,12 @@ public class DirectorySearchQueryHandler : IRequestHandler _options; - public DirectorySearchQueryHandler(IOptions options) + private readonly IMapper _mapper; + + public DirectorySearchQueryHandler(IOptions options, IMapper mapper) { _options = options; + _mapper = mapper; } public DirectoryEntry DirectoryEntry => new () @@ -32,14 +36,9 @@ public class DirectorySearchQueryHandler : IRequestHandler { - using var _dirEntry = DirectoryEntry; - using var searcher = new DirectorySearcher() - { - Filter = request.Filter, - SearchScope = request.Scope, - SizeLimit = request.SizeLimit, - SearchRoot = _dirEntry - }; + using var searcher = _mapper.Map(request); + + searcher.SearchRoot = DirectoryEntry; request.AfterInit?.Invoke(searcher); diff --git a/src/DigitalData.ActiveDirectory/MappingProfile.cs b/src/DigitalData.ActiveDirectory/MappingProfile.cs new file mode 100644 index 0000000..6296d57 --- /dev/null +++ b/src/DigitalData.ActiveDirectory/MappingProfile.cs @@ -0,0 +1,13 @@ +using AutoMapper; +using System.DirectoryServices; + +namespace DigitalData.ActiveDirectory; + +public class MappingProfile : Profile +{ + [System.Diagnostics.CodeAnalysis.SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "")] + public MappingProfile() + { + CreateMap(); + } +}