using System; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using xAiService.Configurations; using xAiService.Constants; using xAiService.Extensions; using xCommons.Extensions; using xExceptions.Constants; namespace xAiService.DI { public static partial class XDIHelperExtension { /// /// Extract AI Service Configuration ... /// /// /// public static XAIServiceConfiguration GetXAIServiceConfiguration(this IConfiguration source) { // XAIServiceConfiguration result = null; // var section = source.GetSection(ConfigurationNodeNames.AI_SERVICE_NODE); if (!section.IsNull()) { result = section.Get(); } // return result; } /// /// Add AI Service Configuration ... /// /// /// public static void AddXAIServiceConfiguration( this IServiceCollection source, XAIServiceConfiguration configuration ) { source.AddSingleton(configuration); } public static void AddXAIService( this IServiceCollection services, IConfiguration configuration, ServiceLifetime lifeTime = ServiceLifetime.Singleton ) { // var config = configuration.GetXAIServiceConfiguration(); AddAIService( services, config ); } public static void AddXAIService( this IServiceCollection services, XAIServiceConfiguration configuration, ServiceLifetime lifeTime = ServiceLifetime.Singleton ) { // AddAIService( services, configuration ); } // #region Private ... /// /// a LogTag for Service ... /// private static string XLogTag = "XFileService"; /// /// print a log in Console ... /// /// private static void Log(string message) { Console.WriteLine($"{XLogTag} => {message}"); } private static void AddAIService( this IServiceCollection services, XAIServiceConfiguration configuration, ServiceLifetime lifeTime = ServiceLifetime.Singleton ) { // var exception = XException.InvalidArgs.ToException(); ; // // Services ... var isServicesExists = !services.IsNull(); if (!isServicesExists) { // Log("AddAIService failed, services not provided ..."); throw exception; } // // Lifetime ... var isLifetimeExists = !lifeTime.IsNull(); if (!isLifetimeExists) { // Log("AddAIService failed, lifetime not provided ..."); throw exception; } // // Check Dependencies Exists ... var isDependenciesPassed = true; if (!isDependenciesPassed) { // Log("AddAIService failed due Dependencies Issues, not provided ..."); throw exception; } // // Validate Configurations ... var isConfigurationExists = !configuration.IsNull() && configuration.IsValid(); if (!isConfigurationExists) { // Log("AddAIService failed due InValid Service Configuration or not provided ..."); throw exception; } // // Register Configurations ... services.AddXAIServiceConfiguration(configuration); // // Register Services ... } #endregion } }