///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; }
public void AddRuleSet(RewriteRuleSet rule) { RuleSetMatchedChain.Add(rule); }