/// <summary> /// Creates an instance of a serviceclient and configures it to send an event notification. /// See: https://developer.github.com/webhooks/#payloads for specification /// </summary> private IServiceClient CreateServiceClient(SubscriptionRelayConfig relayConfig, string eventName, TimeSpan?timeout) { try { var client = ServiceClientFactory.Create(relayConfig.Config.Url); client.Timeout = timeout; client.RequestFilter = request => { request.ContentType = MimeTypes.Json; request.Headers.Remove(WebhookEventConstants.SecretSignatureHeaderName); request.Headers.Remove(WebhookEventConstants.RequestIdHeaderName); request.Headers.Remove(WebhookEventConstants.EventNameHeaderName); if (relayConfig.Config.ContentType.HasValue()) { request.ContentType = relayConfig.Config.ContentType; } if (relayConfig.Config.Secret.HasValue()) { request.Headers.Add(WebhookEventConstants.SecretSignatureHeaderName, CreateContentHmacSignature(request, relayConfig.Config.Secret)); } request.Headers.Add(WebhookEventConstants.RequestIdHeaderName, CreateRequestIdentifier()); request.Headers.Add(WebhookEventConstants.EventNameHeaderName, eventName); }; return(client); } catch (Exception ex) { logger.Error(@"Failed to connect to subscriber: {0}, this URL is not valid".Fmt(relayConfig.Config.Url), ex); return(null); } }
public void UpdateResults(List <SubscriptionDeliveryResult> results) { var serviceClient = ServiceClientFactory.Create(SubscriptionsBaseUrl); if (OnAuthenticationRequired != null) { serviceClient.OnAuthenticationRequired = () => OnAuthenticationRequired(serviceClient); } serviceClient.Put(new UpdateSubscriptionHistory { Results = results }); }
public List <SubscriptionRelayConfig> Search(string eventName) { var serviceClient = ServiceClientFactory.Create(SubscriptionsBaseUrl); if (OnAuthenticationRequired != null) { serviceClient.OnAuthenticationRequired = () => OnAuthenticationRequired(serviceClient); } return(serviceClient.Get(new SearchSubscriptions { EventName = eventName }).Subscribers); }