using BotSharp.Core; using BotSharp.Core.Infrastructures; using BotSharp.Core.Plugins; using BotSharp.Logger; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; namespace BotSharp.OpenAPI; public class ServiceBuilder { public static IServiceProvider CreateHostBuilder() { Console.WriteLine("Creating host builder..."); // Set up configuration var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddEnvironmentVariables() .Build(); // Create host builder var builder = Host.CreateDefaultBuilder() .ConfigureAppConfiguration(config => { config.AddConfiguration(configuration); }) .ConfigureServices((context, services) => { services.AddSingleton(configuration); services.AddBotSharpCore(context.Configuration, options => { }) .AddBotSharpOpenAPI(context.Configuration, [], context.HostingEnvironment, true) .AddBotSharpLogger(context.Configuration); }); // Build the host var host = builder.Build(); var serviceProvider = host.Services; // Configure plugins serviceProvider.GetRequiredService().Configure(null); // Set root services for SharpCacheAttribute SharpCacheAttribute.Services = serviceProvider; return serviceProvider; } }