예제 #1
0
 public OutboundRuleItem(Item innerItem)
     : base(innerItem)
 {
     _BaseRuleItem             = new BaseRuleItem(innerItem);
     _OutboundPreconditionItem = new OutboundPreconditionItem(innerItem);
     _OutboundMatchItem        = new OutboundMatchItem(innerItem);
 }
예제 #2
0
        private static void SetOutboundMatch(OutboundMatchItem outboundMatchItem, IOutboundMatch outboundMatch)
        {
            SetBaseMatch(outboundMatchItem.BaseMatchItem, outboundMatch);

            var scopeTypeItem = outboundMatchItem.MatchScopeItem.MatchScopeType.TargetItem;

            if (scopeTypeItem != null)
            {
                var scopeTypeItemId = scopeTypeItem.ID;
                if (scopeTypeItemId.Equals(new ID(Constants.MatchScope_Response_ItemId)))
                {
                    outboundMatch.MatchingScopeType = ScopeType.Response;
                }
                else if (scopeTypeItemId.Equals(new ID(Constants.MatchScope_ServerVariables_ItemId)))
                {
                    outboundMatch.MatchingScopeType = ScopeType.ServerVariables;
                }
            }

            var outboundMatchScopeItem = outboundMatchItem.OutboundMatchScopeItem.MatchScope.TargetItem;

            if (outboundMatchScopeItem != null)
            {
                if (outboundMatchScopeItem.TemplateID.Equals(new ID(MatchResponseTagsItem.TemplateId)))
                {
                    var matchTags = new MatchResponseTagsItem(outboundMatchScopeItem).MatchTheContentWithin.TargetIDs
                                    .Select(i => outboundMatchItem.InnerItem.Database.GetItem(i))
                                    .Select(i => new MatchTagItem(i))
                                    .Where(i => i != null)
                                    .Select(i => new MatchTag {
                        Tag = i.Tag.Value, Attribute = i.Attribute.Value
                    })
                                    .ToList();

                    outboundMatch.OutboundMatchScope = new MatchResponseTags()
                    {
                        MatchTheContentWithin = matchTags
                    };
                }
                else if (outboundMatchScopeItem.TemplateID.Equals(new ID(MatchServerVariableItem.TemplateId)))
                {
                    var serverVariableItem = new MatchServerVariableItem(outboundMatchScopeItem);
                    outboundMatch.OutboundMatchScope = new MatchServerVariable
                    {
                        ServerVariableName = serverVariableItem.ServerVariableName.Value
                    };
                }
            }
        }