public HttpClientStack(IUrlRewriter urlRewriter = null, bool enableSession = true)
 {
     this.UrlRewriter = urlRewriter;
     if (enableSession && Cookie == null)
     {
         Cookie = new CookieContainer();
     }
 }
Example #2
0
 public HttpClientStack(IUrlRewriter urlRewriter = null, bool enableSession = true)
 {
     this.UrlRewriter = urlRewriter;
     if (enableSession && Cookie == null)
     {
         Cookie = new CookieContainer();
     }
 }
Example #3
0
        public virtual bool Delete()
        {
            bool         result   = this.BaseDelete();
            IUrlRewriter rewriter = RewriteServiceLocator.GetInstance(Token.Instance.UrlRewriterSettings.Provider);

            if (rewriter != null)
            {
                rewriter.ReloadCache();
            }
            return(result);
        }
Example #4
0
 void context_BeginRequest(object sender, EventArgs e)
 {
     if (HttpContext.Current.CurrentHandler == null && string.IsNullOrEmpty(HttpContext.Current.Request.CurrentExecutionFilePathExtension))
     {
         RouteRuleCollection rules = RoutesConfig.routeRuleCollection;
         for (int i = 0; i < rules.Count; i++)
         {
             if (Regex.IsMatch(HttpContext.Current.Request.Path, rules[i].UrlRule, RegexOptions.IgnoreCase))
             {
                 IUrlRewriter urlRewriter = ObjectFactory.GetNamedInstance <IUrlRewriter>(rules[i].RouteHandler);
                 urlRewriter.Rewrite(HttpContext.Current, rules[i].RedirectTo);
                 break;
             }
         }
     }
 }
Example #5
0
        /// <summary>
        /// Gets the application instance of the rewrite service
        /// </summary>
        /// <param name="provider">The provider class ID</param>
        public static IUrlRewriter GetInstance(string provider)
        {
            IUrlRewriter service = null;

            // FIRST LOOK IN CACHE FOR AN EXISTING REWRITE SERVICE OBJECT
            HttpContext context = HttpContext.Current;

            if (context != null)
            {
                service = context.Cache["IRewriteService_" + provider] as IUrlRewriter;
                if (service != null)
                {
                    return(service);
                }
            }

            // NO CACHED OBJECT FOUND, WHAT SERVICE ARE WE USING?
            if (provider == "CommerceBuilder.Catalog.DefaultUrlRewriter")
            {
                // THE DEFAULT SERVICE, MAKE SURE CACHE IS CONFIGURED
                service = new DefaultUrlRewriter(Store.GetCachedSettings().SeoCacheSize);
            }
            else
            {
                // SOME CUSTOM SERVICE, ATTEMPT TO CREATE AN INSTANCE
                try
                {
                    Type providerType = Type.GetType(provider);
                    service = (IUrlRewriter)Activator.CreateInstance(providerType);
                }
                catch (Exception ex)
                {
                    Logger.Error("Unable to create instance for URL rewriter: " + provider, ex);
                }
            }

            // IF WE WERE ABLE TO CREATE THE SERVICE AND WE HAVE HTTPCONTEXT, CACHE THE SERVICE
            if (service != null && context != null)
            {
                context.Cache.Remove("IRewriteService_" + provider);
                context.Cache.Add("IRewriteService_" + provider, service, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 20, 0), CacheItemPriority.High, null);
            }

            // RETURN SERVICE (NULL, IF WE COULD NOT CREATE IT)
            return(service);
        }
Example #6
0
        public virtual SaveResult Save()
        {
            CustomUrl checkExists = CustomUrlDataSource.LoadCustomUrl(this.Url);

            if (checkExists == null || checkExists.CustomUrlId == this.CustomUrlId)
            {
                SaveResult   result   = this.BaseSave();
                IUrlRewriter rewriter = RewriteServiceLocator.GetInstance(Token.Instance.UrlRewriterSettings.Provider);
                if (rewriter != null)
                {
                    rewriter.ReloadCache();
                }
                return(result);
            }
            else
            {
                throw new InvalidOperationException("The value of Url is already defined in the database.  Url must be unique.");
            }
        }
Example #7
0
        protected String GetRewriteUrl(String requestUrl)
        {
            // APPEND APPLICATION PATH
            String applicationPath = Request.ApplicationPath;

            if (!applicationPath.EndsWith("/"))
            {
                applicationPath += "/";
            }
            requestUrl = applicationPath + requestUrl;


            IUrlRewriter rewriter = AbleContext.Resolve <IUrlRewriter>();

            requestUrl = rewriter.RewriteUrl(requestUrl);

            // REMOVE APPLICATION PATH
            if (requestUrl.StartsWith(applicationPath))
            {
                requestUrl = requestUrl.Substring(applicationPath.Length);
            }

            return(requestUrl);
        }
Example #8
0
        private static bool RewriteUrl(IUrlRewriter rewriter, HttpApplication application)
        {
            string rewrittenUrl = rewriter.RewriteUrl(application.Context.Request.RawUrl, application.Request.Headers);

            if (String.IsNullOrWhiteSpace(rewrittenUrl))
            {
                return false;
            }

            switch (rewriter.RewriteType)
            {
                case UrlRewriteType.TemporaryRedirect:
                    application.Context.Response.AppendHeader(LocationHeaderName, rewrittenUrl);
                    application.Context.Response.StatusCode = (int) RedirectType.TemporaryRedirect;
                    application.Context.Response.StatusDescription = PascalCaseToSentenceConverter.Convert(RedirectType.TemporaryRedirect.ToString());
                    application.Context.Response.End();
                    return true;
                case UrlRewriteType.PermanentRedirect:
                    application.Context.Response.AppendHeader(LocationHeaderName, rewrittenUrl);
                    application.Context.Response.StatusCode = (int) RedirectType.PermanentRedirect;
                    application.Context.Response.StatusDescription = PascalCaseToSentenceConverter.Convert(RedirectType.PermanentRedirect.ToString());
                    application.Context.Response.End();
                    return true;
                default:
                    application.Context.RewritePath(rewrittenUrl);
                    return false;                   
            }
        }