namespace Diligent.WebAPI.Business.Services { [ExcludeFromCodeCoverage] public class WebhookPublisherService : IWebhookPublisherService { private readonly IWebhookSubscriptionService _subscriptionService; public WebhookPublisherService(IWebhookSubscriptionService subscriptionService) { _subscriptionService = subscriptionService; } public async Task PublishAsync(string webhookName, object data) { // Get all subscriptions var subscriptions = await _subscriptionService.GetAllSubscriptionsAsync(webhookName); if (subscriptions == null || subscriptions.Count == 0) return; // Send POST request to subscriptions // 1: define POST request var request = new RestRequest("", Method.Post); // 2: define request body var serializedOrder = JsonConvert.SerializeObject(data, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); request.AddJsonBody(serializedOrder); // 3: define request headers request.AddHeader("Content-Type", "application/json"); foreach (var subscription in subscriptions) { try { // 4: define client endpoint var client = new RestClient(subscription.WebhookURL); // 5: send await client.ExecuteAsync(request); } catch (Exception) { // if one subscription fail continue } } } } }