public virtual void SetUp()
 {
     _configuration = new RedirectConfiguration();
     _redirects = new CustomRedirectCollection();
     _sut = new Redirecter(_redirects, _configuration);
     RequestLogger.Instance = new RequestLogger(_configuration);
 }
        /// <summary>
        ///     Read the custom redirects from the dynamic data store, and
        ///     stores them in the CustomRedirect property
        /// </summary>
        protected virtual CustomRedirectCollection LoadCustomRedirects()
        {
            var customRedirects = new CustomRedirectCollection();

            foreach (var redirect in _dataStoreHandler.GetCustomRedirects(false))
                customRedirects.Add(redirect);

            return customRedirects;
        }
 /// <summary>
 ///     Save a collection of redirects, and call method to raise an event in order to clear cache on all servers.
 /// </summary>
 /// <param name="redirects"></param>
 public virtual void SaveCustomRedirects(CustomRedirectCollection redirects)
 {
     Logger.Log(Level.Debug, "Saving custom redirects");
     foreach (CustomRedirect redirect in redirects)
     {
         // Add redirect 
         _dataStoreHandler.SaveCustomRedirect(redirect);
     }
     DataStoreEventHandlerHook.DataStoreUpdated();
 }
        /// <summary>
        ///     Parses the xml file and reads all redirects.
        /// </summary>
        /// <returns>A collection of CustomRedirect objects</returns>
        public CustomRedirectCollection Load()
        {
            const string URLPATH = "/redirects/urls/url";
            const string NEWURL = "new";
            const string OLDURL = "old";
            const string SKIPWILDCARD = "onWildCardMatchSkipAppend";

            var redirects = new CustomRedirectCollection();

            // Parse all url nodes
            XmlNodeList nodes = _customRedirectsXmlFile.SelectNodes(URLPATH);
            foreach (XmlNode node in nodes)
            {
                // Each url new url can have several old values
                // we need to create a redirect object for each pair
                XmlNode newNode = node.SelectSingleNode(NEWURL);

                XmlNodeList oldNodes = node.SelectNodes(OLDURL);
                foreach (XmlNode oldNode in oldNodes)
                {
                    bool skipWildCardAppend = false;
                    XmlAttribute skipWildCardAttr = oldNode.Attributes[SKIPWILDCARD];
                    if (skipWildCardAttr != null)
                    {
                        // If value parsing fails, it will be false by default. We do
                        // not really care to check if it fails, as we cannot do anything
                        // about it (throwing an exception is not a good idea here)
                        bool.TryParse(skipWildCardAttr.Value, out skipWildCardAppend);
                    }

                    // Create new custom redirect nodes
                    var redirect = new CustomRedirect(oldNode.InnerText, newNode.InnerText, skipWildCardAppend, true, true, 0);
                    redirects.Add(redirect);
                }
            }

            return redirects;
        }
 public Redirecter(CustomRedirectCollection customRedirects, RedirectConfiguration redirectConfiguration)
 {
     _customRedirects = customRedirects;
     _redirectConfiguration = redirectConfiguration;
 }