diff --git a/src/DigitalData.ActiveDirectory/DependencyInjection.cs b/src/DigitalData.ActiveDirectory/DependencyInjection.cs new file mode 100644 index 0000000..ce1a975 --- /dev/null +++ b/src/DigitalData.ActiveDirectory/DependencyInjection.cs @@ -0,0 +1,35 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace DigitalData.ActiveDirectory; + +public static class DependencyInjection +{ + public static IServiceCollection AddActiveDirectory(this IServiceCollection services, Action? options = null) + { + var cOptions = new ADConfigurationOptions(); + options?.Invoke(cOptions); + + services.AddMediatR(cfg => + { + cfg.RegisterServicesFromAssemblies(typeof(DependencyInjection).Assembly); + cfg.LicenseKey = cOptions.MediatRLicense; + }); + + if (cOptions.Configuration is null) + services.Configure(o => o = cOptions); + else + services.Configure(cOptions.Configuration); + + return services; + } + + public class ADConfigurationOptions : ActiveDirectoryOptions + { + internal ADConfigurationOptions() { } + + public string? MediatRLicense { get; set; } + + public IConfiguration? Configuration { get; set; } + } +} \ No newline at end of file diff --git a/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj b/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj index c421f15..26e6246 100644 --- a/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj +++ b/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj @@ -11,6 +11,7 @@ +