Example #1
0
 public StandardRuleParser(
     IFactory factory,
     ICustomTypeRegistrar customTypeRegistrar)
 {
     _factory             = factory;
     _customTypeRegistrar = customTypeRegistrar;
 }
Example #2
0
        public Script(
            IFactory factory,
            Stream stream,
            Encoding encoding,
            bool incoming)
        {
            _factory             = factory;
            _incoming            = incoming;
            _customTypeRegistrar = new CustomTypeRegistrar(_factory);

            XDocument document;

            try
            {
                using (var reader = new StreamReader(stream, encoding))
                    document = XDocument.Load(reader);
            }
            catch (Exception ex)
            {
                throw new Exception("Failed to load url rewrite script as XDocument", ex);
            }

            var xmlRoot = document.Root;

            if (xmlRoot == null)
            {
                throw new Exception("No root element in url rewrite script");
            }

            if (xmlRoot.Name != "rewrite")
            {
                throw new Exception("The rewriter rules must be an XML document with a <rewrite> root element");
            }

            var context = new ParserContext();

            foreach (var element in xmlRoot.Elements())
            {
                if (element.Name.LocalName.ToLower() == "rewritemaps")
                {
                    ParseRewriteMaps(element, context);
                }

                else if (element.Name.LocalName.ToLower() == "rules")
                {
                    _rules = ParseRulesElement(element, context, "Root");
                }
            }
        }