BotSharp/src/Infrastructure/BotSharp.OpenAPI/ServiceBuilder.cs

52 lines
1.6 KiB
C#
Raw Normal View History

2025-04-07 04:15:27 +00:00
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<IConfiguration>(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<PluginLoader>().Configure(null);
// Set root services for SharpCacheAttribute
SharpCacheAttribute.Services = serviceProvider;
return serviceProvider;
}
}