Ejemplo n.º 1
0
        ///Probably move this out...
        public static IEnumerable <RewriteRuleSet> BuildRuleSets(IEnumerable <IRedirectLine> conf)
        {
            RewriteRuleSet rules = new RewriteRuleSet();

            foreach (var c in conf)
            {
                if (c == null || c.LineType == RedirectLineType.Ignore)
                {
                    //Ignored line... might be alright
                    continue;
                }

                if (c.LineType == RedirectLineType.Condition)
                {
                    if (rules.Rules != null)
                    {
                        //Have condition and rules, move onto a new ruleset
                        yield return(rules);

                        rules = new RewriteRuleSet();
                    }
                    if (rules.Conditions == null)
                    {
                        rules.Conditions = new List <RewriteCondition>();
                    }

                    rules.Conditions.Add((RewriteCondition)c);
                }
                else if (c.LineType == RedirectLineType.Rule)
                {
                    //Actually only one rule* per Condition
                    //TODO or other types: RewriteRule, RewriteHeader or RewriteProxy
                    if (rules.Rules != null)
                    {
                        //Have condition and rules, move onto a new ruleset
                        yield return(rules);

                        rules = new RewriteRuleSet();
                    }
                    if (rules.Rules == null)
                    {
                        rules.Rules = new List <RewriteRule>();
                    }

                    rules.Rules.Add((RewriteRule)c);
                }
            }

            if (rules.Rules == null)
            {
                throw new Exception("Did this file end with a condition, wtf?");
            }

            yield return(rules);
        }
        ///Probably move this out...
        public static IEnumerable<RewriteRuleSet> BuildRuleSets(IEnumerable<IRedirectLine> conf)
        {
            RewriteRuleSet rules = new RewriteRuleSet();
            foreach (var c in conf)
            {
                if (c == null || c.LineType == RedirectLineType.Ignore)
                {
                    //Ignored line... might be alright
                    continue;
                }

                if (c.LineType == RedirectLineType.Condition)
                {
                    if (rules.Rules != null)
                    {
                        //Have condition and rules, move onto a new ruleset
                        yield return rules;
                        rules = new RewriteRuleSet();
                    }
                    if (rules.Conditions == null) rules.Conditions = new List<RewriteCondition>();

                    rules.Conditions.Add((RewriteCondition)c);
                }
                else if (c.LineType == RedirectLineType.Rule)
                {
                    //Actually only one rule* per Condition
                    //TODO or other types: RewriteRule, RewriteHeader or RewriteProxy
                    if (rules.Rules != null)
                    {
                        //Have condition and rules, move onto a new ruleset
                        yield return rules;
                        rules = new RewriteRuleSet();
                    }
                    if (rules.Rules == null) rules.Rules = new List<RewriteRule>();

                    rules.Rules.Add((RewriteRule)c);
                }
            }

            if (rules.Rules == null) throw new Exception("Did this file end with a condition, wtf?");

            yield return rules;
        }
Ejemplo n.º 3
0
 public void AddRuleSet(RewriteRuleSet rule)
 {
     RuleSetMatchedChain.Add(rule);
 }
 public void AddRuleSet(RewriteRuleSet rule)
 {
     RuleSetMatchedChain.Add(rule);
 }