| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- namespace Diligent.WebAPI.Business.Services
- {
- 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
- }
- }
- }
- }
- }
|