using System; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using xCommons.Extensions; using xHttpService.Configurations; using xHttpService.Constants; using xHttpService.Interfaces; using xHttpService.Providers; namespace xHttpService.DI { public static partial class XDIHelperExtension { /// /// Retrieve XHttpService Configuration from AppSettings /// /// /// public static XHttpServiceConfiguration GetXHttpServiceConfiguration (this IConfiguration configuration) { // var xHttpSection = configuration.GetSection (ConfigurationNodeNames.HTTP_SERVICE_NODE_NAME); return xHttpSection.Get (); } /// /// Register XHttpService Configuration /// /// /// public static void AddXHttpServiceConfiguration ( this IServiceCollection services, IConfiguration configuration ) { // var httpServiceConfiguration = configuration.GetXHttpServiceConfiguration (); services.AddXHttpServiceConfiguration(httpServiceConfiguration); } /// /// Register XHttpService Configuration /// /// /// public static void AddXHttpServiceConfiguration ( this IServiceCollection services, XHttpServiceConfiguration configuration ) { // if (configuration.IsNull ()) { Console.WriteLine($"xHttpService: there is no provided configurations, using default ..."); configuration = new XHttpServiceConfiguration (); } // services.AddSingleton (configuration); } /// /// Register XHttpService on DI ... /// /// /// public static void AddXHttpService ( this IServiceCollection services, IConfiguration configuration ) { // // Register Service Configuration ... if (services.GetRegisteredService ().IsNull ()) { services.AddXHttpServiceConfiguration (configuration); } // // Register Service ... services.AddSingleton (); } /// /// Register XHttpService on DI ... /// /// /// public static void AddXHttpService ( this IServiceCollection services, XHttpServiceConfiguration configuration ) { // // Register Service Configuration ... if (services.GetRegisteredService ().IsNull ()) { services.AddXHttpServiceConfiguration (configuration); } // // Register Service ... services.AddSingleton (); } } }