Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

WebhookPublisherService.cs 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. namespace Diligent.WebAPI.Business.Services
  2. {
  3. [ExcludeFromCodeCoverage]
  4. public class WebhookPublisherService : IWebhookPublisherService
  5. {
  6. private readonly IWebhookSubscriptionService _subscriptionService;
  7. public WebhookPublisherService(IWebhookSubscriptionService subscriptionService)
  8. {
  9. _subscriptionService = subscriptionService;
  10. }
  11. public async Task PublishAsync(string webhookName, object data)
  12. {
  13. // Get all subscriptions
  14. var subscriptions = await _subscriptionService.GetAllSubscriptionsAsync(webhookName);
  15. if (subscriptions == null || subscriptions.Count == 0)
  16. return;
  17. // Send POST request to subscriptions
  18. // 1: define POST request
  19. var request = new RestRequest("", Method.Post);
  20. // 2: define request body
  21. var serializedOrder = JsonConvert.SerializeObject(data, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
  22. request.AddJsonBody(serializedOrder);
  23. // 3: define request headers
  24. request.AddHeader("Content-Type", "application/json");
  25. foreach (var subscription in subscriptions)
  26. {
  27. try
  28. {
  29. // 4: define client endpoint
  30. var client = new RestClient(subscription.WebhookURL);
  31. // 5: send
  32. await client.ExecuteAsync(request);
  33. }
  34. catch (Exception)
  35. {
  36. // if one subscription fail continue
  37. }
  38. }
  39. }
  40. }
  41. }