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;
}
}