using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace StellaOps.Notifier.Worker.Escalation; /// /// Extension methods for registering escalation services. /// public static class EscalationServiceExtensions { /// /// Adds escalation and on-call services. /// public static IServiceCollection AddEscalationServices( this IServiceCollection services, IConfiguration configuration) { // Core services services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); // Ack bridge services.Configure(configuration.GetSection(AckBridgeOptions.SectionName)); services.AddSingleton(); // Inbox channels services.AddSingleton(); services.AddSingleton(); services.AddSingleton(sp => sp.GetRequiredService()); return services; } /// /// Adds PagerDuty integration. /// public static IServiceCollection AddPagerDutyIntegration( this IServiceCollection services, IConfiguration configuration) { services.Configure(configuration.GetSection(PagerDutyOptions.SectionName)); services.AddHttpClient(); services.AddSingleton(sp => sp.GetRequiredService()); return services; } /// /// Adds OpsGenie integration. /// public static IServiceCollection AddOpsGenieIntegration( this IServiceCollection services, IConfiguration configuration) { services.Configure(configuration.GetSection(OpsGenieOptions.SectionName)); services.AddHttpClient(); services.AddSingleton(sp => sp.GetRequiredService()); return services; } }