示例#1
0
        /// <summary>
        /// ########## ########## ############# ####### # ######### email.
        /// </summary>
        /// <param name="eventType">######### ######### <see cref="Mandrill.WebHookEventType"/>.</param>
        /// <returns>########## ############# ####### # ######### email.</returns>
        public static Guid GetBulkEmailResponse(this WebHookEventType eventType)
        {
            switch (eventType)
            {
            case WebHookEventType.Click:
                return(MarketingConsts.BulkEmailResponseClickedId);

            case WebHookEventType.Open:
                return(MarketingConsts.BulkEmailResponseOpenedId);

            case WebHookEventType.Hard_bounce:
                return(MarketingConsts.BulkEmailResponseHardBounceId);

            case WebHookEventType.Soft_bounce:
                return(MarketingConsts.BulkEmailResponseSoftBounceId);

            case WebHookEventType.Spam:
                return(MarketingConsts.BulkEmailResponseSpamId);

            case WebHookEventType.Send:
                return(MarketingConsts.BulkEmailResponseSentId);

            case WebHookEventType.Unsub:
                return(MarketingConsts.BulkEmailResponseUnsubId);

            case WebHookEventType.Reject:
                return(MarketingConsts.BulkEmailResponseRejectedId);

            case WebHookEventType.Deferral:
                return(MarketingConsts.BulkEmailResponseDeferralId);

            default:
                return(Guid.Empty);
            }
        }
示例#2
0
 private object GetPayload(WebHookSubscription subscription, WebHookEventType eventType, Node node,
                           VersionNumber previousVersion)
 {
     return(string.IsNullOrWhiteSpace(subscription.Payload)
         ? GetDefaultPayload(subscription, eventType, node, previousVersion)
         : JsonConvert.DeserializeObject(subscription.Payload));
 }
示例#3
0
        private object GetPayload(WebHookSubscription subscription, WebHookEventType eventType, Node node,
                                  VersionNumber previousVersion)
        {
            var defaultPayload = GetDefaultPayload(subscription, eventType, node, previousVersion);

            return(string.IsNullOrWhiteSpace(subscription.Payload)
                ? defaultPayload
                : GetMergedPayload(subscription, eventType, node, defaultPayload));
        }
        //TODO вынести отсюда
        private string GetWebhookEventByType(WebHookEventType type)
        {
            switch (type)
            {
            case WebHookEventType.IssueCreated:
                return("jira:issue_created");

            case WebHookEventType.IssueUpdated:
                return("jira:issue_updated");

            default:
                //TODO реализовать остальные эвенты
                throw new NotImplementedException();
            }
        }
示例#5
0
 private object GetDefaultPayload(WebHookSubscription subscription, WebHookEventType eventType, Node node,
                                  VersionNumber previousVersion)
 {
     return(new
     {
         nodeId = node?.Id ?? 0,
         versionId = node?.VersionId ?? 0,
         version = node?.Version?.ToString(),
         previousVersion = previousVersion?.ToString(),
         versionModificationDate = node?.VersionModificationDate ?? DateTime.MinValue,
         modifiedBy = node?.ModifiedById ?? 0,
         path = node?.Path,
         name = node?.Name,
         displayName = node?.DisplayName,
         eventName = eventType.ToString(),
         subscriptionId = subscription.Id,
         sentTime = DateTime.UtcNow,
         repository = _clientStoreOptions.RepositoryUrl?.RemoveUrlSchema()
     });
 }
示例#6
0
        private object GetMergedPayload(WebHookSubscription subscription, WebHookEventType eventType, Node node, object defaultPayload)
        {
            // replace dynamic parameters (e.g. currentuser, content.Path, etc.)
            var replacedPayload = TemplateManager.Replace(typeof(WebHooksTemplateReplacer), subscription.Payload,
                                                          new WebHooksTemplateReplacerContext
            {
                Node         = node,
                EventType    = eventType,
                Subscription = subscription
            });

            var defaultJson = JsonConvert.SerializeObject(defaultPayload, Formatting.Indented);
            var jo          = JsonConvert.DeserializeObject <JObject>(defaultJson);

            // merge the provided custom payload into the default
            var newJson = JsonConvert.DeserializeObject <JObject>(replacedPayload);

            jo.Merge(newJson);

            return(jo);
        }
示例#7
0
        /// <summary>
        /// ########## ###### # email #########.
        /// </summary>
        /// <param name="eventType">######### ######### <see cref="Mandrill.WebHookEventType"/>.</param>
        /// <returns>###### # email #########.</returns>
        public static BulkEmailResponseCode GetBulkEmailResponseCode(this WebHookEventType eventType)
        {
            switch (eventType)
            {
            case WebHookEventType.Click:
                return(BulkEmailResponseCode.Clicked);

            case WebHookEventType.Open:
                return(BulkEmailResponseCode.Opened);

            case WebHookEventType.Hard_bounce:
                return(BulkEmailResponseCode.HardBounce);

            case WebHookEventType.Soft_bounce:
                return(BulkEmailResponseCode.SoftBounce);

            case WebHookEventType.Spam:
                return(BulkEmailResponseCode.Spam);

            case WebHookEventType.Send:
                return(BulkEmailResponseCode.Sent);

            case WebHookEventType.Unsub:
                return(BulkEmailResponseCode.Unsub);

            case WebHookEventType.Reject:
                return(BulkEmailResponseCode.Rejected);

            case WebHookEventType.Deferral:
                return(BulkEmailResponseCode.Deferral);

            default:
                throw new InvalidCastException(eventType +
                                               "is not a defined value for enum type WebHookEventType.");
            }
        }
示例#8
0
 public Task FireWebHookAsync(WebHookSubscription subscription, WebHookEventType eventType, Node node, CancellationToken cancel)
 {
     return(_webHookClient.SendAsync(subscription.Url, eventType.ToString(), node.Id, subscription.Id,
                                     subscription.HttpMethod, GetPayload(subscription, eventType, node, null),
                                     subscription.HttpHeaders, cancel));
 }
示例#9
0
        private static Task FireWebHook(HttpContext context, WebHookSubscription webhook, Node node, WebHookEventType eventType)
        {
            var eventProcessor = context.RequestServices.GetService <IWebHookEventProcessor>();

            return(eventProcessor.FireWebHookAsync(webhook, eventType, node, context.RequestAborted));
        }
示例#10
0
        public static async Task <Content> FireWebHook(Content webHookContent, HttpContext context, int nodeId, WebHookEventType eventType)
        {
            await FireWebHook(context, (WebHookSubscription)webHookContent.ContentHandler, Node.LoadNode(nodeId),
                              eventType);

            return(webHookContent);
        }
示例#11
0
 public WebHookSubscriptionInfo(WebHookSubscription subscription, WebHookEventType eventType)
 {
     Subscription = subscription;
     EventType    = eventType;
 }