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

59 lines
1.8 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;
2025-04-11 22:03:43 +00:00
using System.Reflection;
2025-04-07 04:15:27 +00:00
namespace BotSharp.OpenAPI;
public class ServiceBuilder
{
2025-04-11 22:03:43 +00:00
public static IServiceProvider CreateHostBuilder(Assembly? startUp = null)
2025-04-07 04:15:27 +00:00
{
Console.WriteLine("Creating host builder...");
// Set up configuration
2025-04-11 22:03:43 +00:00
var configurationBuilder = new ConfigurationBuilder()
2025-04-07 04:15:27 +00:00
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
2025-04-11 22:03:43 +00:00
.AddEnvironmentVariables();
if (startUp != null)
{
configurationBuilder.AddUserSecrets(startUp);
}
var configuration = configurationBuilder.Build();
2025-04-07 04:15:27 +00:00
// 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;
}
}