using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace Kruzya.TelegramBot.Core;
public abstract class Module
{
protected readonly Core Core;
protected IConfiguration Configuration => Core.Configuration;
public Module(Core core)
{
Core = core;
}
public virtual void ConfigureServices(IServiceCollection services)
{
}
public virtual void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
}
///
/// Ensures if module is loaded and started. Note that call can change module event chain.
///
/// The Module type.
/// Module instance.
protected T EnsureLoaded() where T : Module
{
return (T) Core.EnsureLoaded(typeof(T));
}
}