using System; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using xCommons.Extensions; using xEventService.Configuration; using xEventService.Constants; using xEventService.Extensions; using xEventService.Interfaces; using xEventService.Providers; using xExceptions.Constants; namespace xEventService.DI { public static partial class XDIHelperExtension { /// /// Extract EventService Configurations ... /// /// /// public static XEventServiceConfiguration GetXEventServiceConfiguration( this IConfiguration source ) { // var configSection = source .GetSection(ConfigurationNodeNames.EVENT_SERVICE_NODE_NAME); var result = configSection.Get(); // return result; } /// /// Register Event Service Configurations ... /// /// /// public static void AddXEventServiceConfiguration( this IServiceCollection services, IConfiguration configuration ) { // var config = configuration.GetXEventServiceConfiguration(); services.AddXEventServiceConfiguration(config); } /// /// Register Event Service Configurations ... /// /// /// public static void AddXEventServiceConfiguration( this IServiceCollection services, XEventServiceConfiguration configuration ) { // // Validate ... var isValid = configuration.IsValid() && (configuration.Broker == XEventBroker.XKafka || (configuration.Broker == XEventBroker.XZeroMQ && configuration.ZeroMQ.IsValid()) || (configuration.Broker == XEventBroker.XRabbitMQ && configuration.RabbitMQ.IsValid())); if (!isValid) { // Log("Registration Failed, due Invalid Configuration ..."); XException.InvalidConfiguration.Throw(); } // // Register Configuration as Singleton ... services.AddSingleton(configuration); } // #region Private ... /// /// a LogTag for Service ... /// private static string XLogTag = XEventServiceConstants.XEventServiceDILogTag; /// /// print a log in Console ... /// /// private static void Log(string message) { Console.WriteLine($"{XLogTag} => {message}"); } #endregion } }