Files
Telegrator/src/Telegrator.Hosting/Hosting/TelegramBotHostBuilder.cs
T

76 lines
2.9 KiB
C#
Raw Normal View History

2025-07-24 23:19:59 +04:00
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
2026-03-06 23:19:24 +04:00
using Telegrator.Core;
2026-03-06 23:27:11 +04:00
using Telegrator.Providers;
2025-07-24 23:19:59 +04:00
#pragma warning disable IDE0001
namespace Telegrator.Hosting
{
/// <summary>
/// Represents a hosted telegram bots and services builder that helps manage configuration, logging, lifetime, and more.
/// </summary>
2026-03-07 02:35:53 +04:00
public class TelegramBotHostBuilder : ICollectingProvider
2025-07-24 23:19:59 +04:00
{
private readonly HostApplicationBuilder _innerBuilder;
2026-03-07 02:35:53 +04:00
private readonly HostApplicationBuilderSettings _settings;
internal IHandlersCollection _handlers = null!;
2025-07-24 23:19:59 +04:00
/// <inheritdoc/>
public IHandlersCollection Handlers => _handlers;
/// <inheritdoc/>
public IServiceCollection Services => _innerBuilder.Services;
/// <inheritdoc/>
public IConfigurationManager Configuration => _innerBuilder.Configuration;
/// <inheritdoc/>
public ILoggingBuilder Logging => _innerBuilder.Logging;
/// <inheritdoc/>
public IHostEnvironment Environment => _innerBuilder.Environment;
/// <summary>
/// Initializes a new instance of the <see cref="TelegramBotHostBuilder"/> class.
/// </summary>
/// <param name="hostApplicationBuilder"></param>
/// <param name="settings"></param>
2026-03-07 02:35:53 +04:00
public TelegramBotHostBuilder(HostApplicationBuilder hostApplicationBuilder, HostApplicationBuilderSettings? settings = null)
2025-07-24 23:19:59 +04:00
{
_innerBuilder = hostApplicationBuilder ?? throw new ArgumentNullException(nameof(hostApplicationBuilder));
2026-03-07 02:35:53 +04:00
_settings = settings ?? new HostApplicationBuilderSettings();
2025-07-24 23:19:59 +04:00
2026-03-07 02:35:53 +04:00
_innerBuilder.AddTelegrator(_settings);
_innerBuilder.Logging.ClearProviders();
2025-07-24 23:19:59 +04:00
}
/// <summary>
/// Initializes a new instance of the <see cref="TelegramBotHostBuilder"/> class.
/// </summary>
/// <param name="hostApplicationBuilder"></param>
/// <param name="handlers"></param>
/// <param name="settings"></param>
2026-03-07 02:35:53 +04:00
public TelegramBotHostBuilder(HostApplicationBuilder hostApplicationBuilder, IHandlersCollection handlers, HostApplicationBuilderSettings? settings = null)
{
_innerBuilder = hostApplicationBuilder ?? throw new ArgumentNullException(nameof(hostApplicationBuilder));
2026-03-07 02:35:53 +04:00
_settings = settings ?? new HostApplicationBuilderSettings();
2026-03-07 02:35:53 +04:00
_innerBuilder.AddTelegrator(_settings, null, handlers);
_innerBuilder.Logging.ClearProviders();
}
2025-07-24 23:19:59 +04:00
/// <summary>
/// Builds the host.
/// </summary>
/// <returns></returns>
public TelegramBotHost Build()
{
2026-03-07 02:35:53 +04:00
TelegramBotHost host = new TelegramBotHost(_innerBuilder);
host.UseTelegrator();
return host;
2025-07-24 23:19:59 +04:00
}
}
}