Esempio n. 1
0
        private void AddConstraints(IDictionary <object, object> properties, IList <SelectorModel> selectors)
        {
            if (properties.TryGetValue(typeof(IWebHookEventMetadata), out var eventMetadata))
            {
                AddConstraint(_eventMapperConstraint, selectors);
            }

            if (properties.TryGetValue(typeof(IWebHookEventSelectorMetadata), out var eventSourceMetadata))
            {
                var eventName = ((IWebHookEventSelectorMetadata)eventSourceMetadata).EventName;
                if (eventName != null)
                {
                    // IWebHookEventMetadata is mandatory when performing action selection using event names.
                    Debug.Assert(eventMetadata != null);
                    properties.TryGetValue(typeof(IWebHookPingRequestMetadata), out var pingMetadata);

                    // Use eventMetadata to choose constraint type because IWebHookPingRequestMetadata is optional.
                    IActionConstraintMetadata constraint;
                    if (eventMetadata is IWebHookEventMetadata)
                    {
                        constraint = new WebHookSingleEventNamesConstraint(
                            eventName,
                            ((IWebHookPingRequestMetadata)pingMetadata)?.PingEventName);
                    }
                    else
                    {
                        constraint = new WebHookMultipleEventNamesConstraint(
                            eventName,
                            (IReadOnlyList <IWebHookPingRequestMetadata>)pingMetadata);
                    }

                    AddConstraint(constraint, selectors);
                }
            }
        }
Esempio n. 2
0
        private void AddConstraints(IDictionary <object, object> properties, IList <SelectorModel> selectors)
        {
            if (properties.TryGetValue(typeof(IWebHookEventMetadata), out var eventMetadata))
            {
                AddConstraint(_eventMapperConstraint, selectors);
            }

            if (properties.TryGetValue(typeof(IWebHookEventSelectorMetadata), out var eventSourceMetadata))
            {
                var eventName = ((IWebHookEventSelectorMetadata)eventSourceMetadata).EventName;
                if (eventName != null)
                {
                    IActionConstraintMetadata constraint;
                    if (eventMetadata == null)
                    {
                        constraint = new WebHookSingleEventNamesConstraint(eventName, pingEventName: null);
                    }
                    else if (eventMetadata is IWebHookEventMetadata singleEventMetadata)
                    {
                        constraint = new WebHookSingleEventNamesConstraint(
                            eventName,
                            singleEventMetadata.PingEventName);
                    }
                    else
                    {
                        constraint = new WebHookMultipleEventNamesConstraint(
                            eventName,
                            (IEnumerable <IWebHookEventMetadata>)eventMetadata);
                    }

                    AddConstraint(constraint, selectors);
                }
            }
        }