您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

WebhookPublisherService.cs 1.6KB

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