Files
btcpayserver/BTCPayServer/Plugins/Webhooks/WebhookExtensions.cs
2025-10-19 22:31:24 +09:00

33 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using BTCPayServer.Data;
using BTCPayServer.Plugins.Emails.Views;
using BTCPayServer.Plugins.Webhooks;
using BTCPayServer.Plugins.Webhooks.Views;
using Microsoft.Extensions.DependencyInjection;
namespace BTCPayServer;
public static class WebhookExtensions
{
public static IServiceCollection AddWebhookTriggerProvider<T>(this IServiceCollection services) where T : WebhookTriggerProvider
{
services.AddSingleton<T>();
services.AddSingleton<WebhookTriggerProvider>(o => o.GetRequiredService<T>());
return services;
}
public static IServiceCollection AddWebhookTriggerViewModels(this IServiceCollection services, IEnumerable<EmailTriggerViewModel> viewModels)
{
foreach(var trigger in viewModels)
{
var webhookType = trigger.Type;
if (trigger.Type.StartsWith("WH-"))
throw new ArgumentException("Webhook type cannot start with WH-");
trigger.Type = EmailRuleData.GetWebhookTriggerName(trigger.Type);
services.AddSingleton(new AvailableWebhookViewModel(webhookType, trigger.Description));
services.AddSingleton(trigger);
}
return services;
}
}