MvcSubdomainRouting.SubDomainRoute.ProcessConstraint C# (CSharp) Method

ProcessConstraint() protected method

protected ProcessConstraint ( System.Web.HttpContextBase httpContext, object constraint, string parameterName, RouteValueDictionary values, RouteDirection routeDirection ) : bool
httpContext System.Web.HttpContextBase
constraint object
parameterName string
values RouteValueDictionary
routeDirection RouteDirection
return bool
        protected override bool ProcessConstraint(HttpContextBase httpContext, object constraint, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
        {
            if (parameterName == _subDomain && constraint is ISubDomainConstraint)
            {
                var uri = httpContext.Request.Url;
                if (uri != null)
                {
                    var url = uri.Host;
                    var index = url.IndexOf(".");
                    if (index > 0)
                    {
                        var possibleSubDomain = url.Substring(0, index).ToLower();
                        values.Add(_subDomain, possibleSubDomain);
                        return ((ISubDomainConstraint)constraint).Match(httpContext, this, parameterName, values, routeDirection);
                    }
                }
            }
            return base.ProcessConstraint(httpContext, constraint, parameterName, values, routeDirection);
        }