Beispiel #1
0
        /// <summary>
        /// Examines the request, if it needs to be redirected then the response is set up and true
        /// returned otherwise false is returned.
        /// </summary>
        /// <param name="environment"></param>
        /// <returns></returns>
        private bool Redirect(IDictionary <string, object> environment)
        {
            var context = OwinContext.Create(environment);

            var redirectionRequestContext = new RedirectionRequestContext()
            {
                IsMobile = context.RequestHeadersDictionary.UserAgentValue.IsMobileUserAgentString,
            };

            var newPath = _RedirectionConfiguration.RedirectToPathFromRoot(context.RequestPathNormalised, redirectionRequestContext);
            var result  = newPath != null;

            if (result)
            {
                context.ResponseHttpStatusCode = HttpStatusCode.Redirect;
                context.ResponseHeadersDictionary["Location"] = BuildNewPath(context, newPath);
            }

            return(result);
        }
Beispiel #2
0
        /// <summary>
        /// Examines the request, if it needs to be redirected then the response is set up and true
        /// returned otherwise false is returned.
        /// </summary>
        /// <param name="environment"></param>
        /// <returns></returns>
        private bool Redirect(IDictionary <string, object> environment)
        {
            var context  = PipelineContext.GetOrCreate(environment);
            var request  = context.Request;
            var response = context.Response;

            var redirectionRequestContext = new RedirectionRequestContext()
            {
                IsMobile = request.IsMobileUserAgentString,
            };

            var newPath = _RedirectionConfiguration.RedirectToPathFromRoot(request.PathNormalised.Value, redirectionRequestContext);
            var result  = newPath != null;

            if (result)
            {
                response.StatusCode = (int)HttpStatusCode.Redirect;
                response.Headers.Add("Location", new string[] { BuildNewPath(request, newPath) });
            }

            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="pathFromRoot"></param>
        /// <param name="requestContext"></param>
        /// <returns></returns>
        public string RedirectToPathFromRoot(string pathFromRoot, RedirectionRequestContext requestContext)
        {
            string result = null;

            var redirections = _Redirections;
            List <Redirection> redirectList;

            if (redirections.TryGetValue(pathFromRoot, out redirectList))
            {
                for (var i = 0; i < redirectList.Count; ++i)
                {
                    var redirection        = redirectList[i];
                    var useThisRedirection = result == null || requestContext.IsMobile == redirection.IsMobile;

                    if (useThisRedirection)
                    {
                        result = redirection.ToPath;
                    }
                }
            }

            return(result);
        }
 public void TestInitialise()
 {
     _Configuration = Factory.ResolveNewInstance <IRedirectionConfiguration>();
     _Context       = new RedirectionRequestContext();
 }