public void Start()
        {
            var settings = XmlHelper.Deserialize<Settings>("settings.xml");
            var patterns = settings.Patterns?.ToDictionary(p => p.Name);
            foreach (var redirectRule in settings.Redirects)
            {
                Dictionary<Regex, string> queryRules = null;
                Dictionary<string, Dictionary<Regex, string>> contentRules = null;
                if (patterns != null)
                {
                    queryRules = redirectRule.Patterns?.Split(',').ToDictionary(
                        patternName => new Regex(patterns[patternName].Regex, RegexOptions.IgnoreCase),
                        patternName => patterns[patternName].Replacement);

                    contentRules = redirectRule.Replaces?.ToDictionary(
                        rule => rule.MediaType,
                        rule => rule.Patterns.Split(',').ToDictionary(
                            patternName => new Regex(patterns[patternName].Regex, RegexOptions.IgnoreCase),
                            patternName => patterns[patternName].Replacement));
                }
                var redirectSettings = new RedirectSettings
                {
                    Urls = redirectRule.From.Split(','),
                    UrlProcessor = new UrlProcessor(new Uri(redirectRule.To), queryRules),
                    ResponseContentProcessor = new ContentProcessor(contentRules)
                };
                _redirects.Add(new HttpRedirect(redirectSettings));
            }
            foreach (var httpRedirect in _redirects)
            {
                httpRedirect.Start();
            }
        }
Example #2
0
        public HttpRedirect(RedirectSettings settings)
        {
            _urlProcessor             = settings.UrlProcessor;
            _cookieProcessor          = settings.CookieProcessor ?? new CookieProcessor();
            _responseContentProcessor = settings.ResponseContentProcessor;

            _listener = new HttpListener();
            foreach (var url in settings.Urls)
            {
                _listener.Prefixes.Add(url);
            }
        }
Example #3
0
        public HttpRedirect(RedirectSettings settings)
        {
            _urlProcessor = settings.UrlProcessor;
            _cookieProcessor = settings.CookieProcessor ?? new CookieProcessor();
            _responseContentProcessor = settings.ResponseContentProcessor;

            _listener = new HttpListener();
            foreach (var url in settings.Urls)
            {
                _listener.Prefixes.Add(url);
            }
        }