diff --git a/Telegrator.Hosting.Web/TelegramBotWebHost.cs b/Telegrator.Hosting.Web/TelegramBotWebHost.cs index 5686ea4..44eb3e8 100644 --- a/Telegrator.Hosting.Web/TelegramBotWebHost.cs +++ b/Telegrator.Hosting.Web/TelegramBotWebHost.cs @@ -5,8 +5,10 @@ using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using System.Text; using Telegram.Bot.Types.Enums; +using Telegrator.Configuration; using Telegrator.Hosting.Components; using Telegrator.Hosting.Providers; using Telegrator.Hosting.Web.Components; @@ -22,7 +24,7 @@ namespace Telegrator.Hosting.Web { private readonly WebApplication _innerApp; private readonly IUpdateRouter _updateRouter; - private readonly ILogger _logger; + private readonly ILogger _logger; private bool _disposed; @@ -43,7 +45,7 @@ namespace Telegrator.Hosting.Web /// /// This application's logger /// - public ILogger Logger => _logger; + public ILogger Logger => _logger; // Private interface fields IServiceProvider IEndpointRouteBuilder.ServiceProvider => Services; @@ -53,12 +55,20 @@ namespace Telegrator.Hosting.Web internal TelegramBotWebHost(WebApplicationBuilder webApplicationBuilder, HostHandlersCollection handlers) { + // Registering this host in services for easy access RegisterHostServices(webApplicationBuilder, handlers); + + // Building proxy application _innerApp = webApplicationBuilder.Build(); - _updateRouter = Services.GetRequiredService(); - _logger = Services.GetRequiredService>(); + // Initializing bot info, as it requires to make a request via tg bot + Services.GetRequiredService(); + // Reruesting services for this host + _updateRouter = Services.GetRequiredService(); + _logger = Services.GetRequiredService>(); + + // Logging registering handlers in DEBUG purposes LogHandlers(handlers); } diff --git a/Telegrator.Hosting.Web/TelegramBotWebOptions.cs b/Telegrator.Hosting.Web/TelegramBotWebOptions.cs index 3682259..267ccb6 100644 --- a/Telegrator.Hosting.Web/TelegramBotWebOptions.cs +++ b/Telegrator.Hosting.Web/TelegramBotWebOptions.cs @@ -1,37 +1,18 @@ using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.Options; using System.Diagnostics.CodeAnalysis; namespace Telegrator.Hosting.Web { /// - /// Configuration options for Telegram bot behavior and execution settings. - /// Controls various aspects of bot operation including concurrency, routing, webhook receiving, and execution policies. + /// Options for configuring the behavior for TelegramBotWebHost. /// public class TelegramBotWebOptions : TelegratorOptions { /// - /// Gets or sets HTTPS URL to send updates to. Use an empty string to remove webhook integration + /// Disables automatic configuration for all of required instances /// - [StringSyntax(StringSyntaxAttribute.Uri)] - public required string WebhookUri { get; set; } - - /// - /// A secret token to be sent in a header “X-Telegram-Bot-Api-Secret-Token” in every webhook request, 1-256 characters. - /// Only characters A-Z, a-z, 0-9, _ and - are allowed. - /// The header is useful to ensure that the request comes from a webhook set by you. - /// - public string? SecretToken { get; set; } - - /// - /// The maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, 1-100. Defaults to 40. - /// Use lower values to limit the load on your bot's server, and higher values to increase your bot's throughput. - /// - public int MaxConnections { get; set; } = 40; - - /// - /// Pass true to drop all pending updates - /// - public bool DropPendingUpdates { get; set; } + public bool DisableAutoConfigure { get; set; } /// public string[]? Args { get; init; } diff --git a/Telegrator.Hosting.Web/TelegratorWebOptions.cs b/Telegrator.Hosting.Web/TelegratorWebOptions.cs new file mode 100644 index 0000000..2b809f9 --- /dev/null +++ b/Telegrator.Hosting.Web/TelegratorWebOptions.cs @@ -0,0 +1,35 @@ +using System.Diagnostics.CodeAnalysis; + +namespace Telegrator.Hosting.Web +{ + /// + /// Configuration options for Telegram bot behavior and execution settings. + /// Controls various aspects of bot operation including concurrency, routing, webhook receiving, and execution policies. + /// + public class TelegratorWebOptions + { + /// + /// Gets or sets HTTPS URL to send updates to. Use an empty string to remove webhook integration + /// + [StringSyntax(StringSyntaxAttribute.Uri)] + public required string WebhookUri { get; set; } + + /// + /// A secret token to be sent in a header “X-Telegram-Bot-Api-Secret-Token” in every webhook request, 1-256 characters. + /// Only characters A-Z, a-z, 0-9, _ and - are allowed. + /// The header is useful to ensure that the request comes from a webhook set by you. + /// + public string? SecretToken { get; set; } + + /// + /// The maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, 1-100. Defaults to 40. + /// Use lower values to limit the load on your bot's server, and higher values to increase your bot's throughput. + /// + public int MaxConnections { get; set; } = 40; + + /// + /// Pass true to drop all pending updates + /// + public bool DropPendingUpdates { get; set; } + } +}