Ejemplo n.º 1
0
        public static void LogRoute(TextWriter writer, string name, RouteLoggingInfo routeInfo)
        {
            writer.WriteLine("URL: {0} {1}", routeInfo.Url, routeInfo.HttpMethods);

            if (name != null)
                writer.WriteLine("NAME: {0}", name);

            if (routeInfo.Defaults != null && routeInfo.Defaults.Count > 0)
            {
                writer.WriteLine("DEFAULTS:");
                foreach (var @default in routeInfo.Defaults)
                    writer.WriteLine("- {0} = {1}", @default.Key, @default.Value);
            }

            if (routeInfo.Constraints != null && routeInfo.Constraints.Count > 0)
            {
                writer.WriteLine("CONSTRAINTS:");
                foreach (var constraint in routeInfo.Constraints)
                    writer.WriteLine("- {0} = {1}", constraint.Key, constraint.Value);
            }

            if (routeInfo.DataTokens != null && routeInfo.DataTokens.Count > 0)
            {
                writer.WriteLine("DATA TOKENS:");
                foreach (var t in routeInfo.DataTokens)
                    writer.WriteLine("- {0} = {1}", t.Key, t.Value);
            }

            writer.WriteLine(" ");
            writer.WriteLine(new String('-', 40));
            writer.WriteLine(" ");
        }
Ejemplo n.º 2
0
        public static void LogRoute(TextWriter writer, string name, RouteLoggingInfo routeInfo)
        {
            writer.WriteLine("URL: {0} {1}", routeInfo.Url, routeInfo.HttpMethods);

            if (name != null)
            {
                writer.WriteLine("NAME: {0}", name);
            }

            if (routeInfo.Defaults != null && routeInfo.Defaults.Count > 0)
            {
                writer.WriteLine("DEFAULTS:");
                foreach (var @default in routeInfo.Defaults)
                {
                    writer.WriteLine("- {0} = {1}", @default.Key, @default.Value);
                }
            }

            if (routeInfo.Constraints != null && routeInfo.Constraints.Count > 0)
            {
                writer.WriteLine("CONSTRAINTS:");
                foreach (var constraint in routeInfo.Constraints)
                {
                    writer.WriteLine("- {0} = {1}", constraint.Key, constraint.Value);
                }
            }

            if (routeInfo.DataTokens != null && routeInfo.DataTokens.Count > 0)
            {
                writer.WriteLine("DATA TOKENS:");
                foreach (var t in routeInfo.DataTokens)
                {
                    writer.WriteLine("- {0} = {1}", t.Key, t.Value);
                }
            }

            writer.WriteLine(" ");
            writer.WriteLine(new String('-', 40));
            writer.WriteLine(" ");
        }
Ejemplo n.º 3
0
        public static RouteLoggingInfo GetRouteInfo(string url,
                                                    IDictionary <string, object> defaults,
                                                    IDictionary <string, object> queryStringDefaults,
                                                    IDictionary <string, object> constraints,
                                                    IDictionary <string, object> queryStringConstraints,
                                                    IDictionary <string, object> dataTokens)
        {
            var item = new RouteLoggingInfo {
                Url = url
            };

            //************************
            // Defaults

            var allDefaults = new Dictionary <string, object>();

            allDefaults.Merge(defaults);
            allDefaults.Merge(queryStringDefaults);

            foreach (var @default in allDefaults)
            {
                var defaultValue = @default.Value.ToString();
                item.Defaults.Add(@default.Key, defaultValue);
            }

            //************************
            // Constraints

            var allConstraints = new Dictionary <string, object>();

            allConstraints.Merge(constraints);
            allConstraints.Merge(queryStringConstraints);

            foreach (var constraint in allConstraints)
            {
                if (constraint.Value == null || constraint.Value is IInboundHttpMethodConstraint)
                {
                    continue;
                }

                var regexRouteConstraint = constraint.Value as RegexRouteConstraintBase;
                if (regexRouteConstraint != null)
                {
                    item.Constraints.Add(constraint.Key, regexRouteConstraint.Pattern);
                }
                else
                {
                    var constraintValue        = constraint.Value;
                    var constraintDescriptions = new List <string>();

                    // Simple string regex constraint - from ASP.NET routing features
                    if (constraintValue is string)
                    {
                        constraintDescriptions.Add(constraintValue.ToString());
                    }
                    else
                    {
                        // Optional constraint - unwrap it and continue
                        var optionalConstraint = constraintValue as IOptionalRouteConstraint;
                        if (optionalConstraint != null)
                        {
                            constraintValue = optionalConstraint.Constraint;
                        }

                        // QueryString constraint - unwrap it and continue
                        var queryStringConstraint = constraintValue as IQueryStringRouteConstraint;
                        if (queryStringConstraint != null)
                        {
                            constraintValue = queryStringConstraint.Constraint;
                            constraintDescriptions.Add("QueryStringRouteConstraint");
                        }

                        // Compound constraint - join type names of the inner constraints
                        var compoundConstraint = constraintValue as ICompoundRouteConstraint;
                        if (compoundConstraint != null)
                        {
                            constraintDescriptions.AddRange(compoundConstraint.Constraints.Select(c => c.GetType().Name));
                        }
                        else if (constraintValue != null)
                        {
                            // Single constraint type
                            constraintDescriptions.Add(constraintValue.GetType().Name);
                        }
                    }

                    item.Constraints.Add(constraint.Key, String.Join(", ", constraintDescriptions));
                }
            }

            //************************
            // DataTokens

            if (dataTokens != null)
            {
                foreach (var token in dataTokens)
                {
                    if (token.Key.ValueEquals("namespaces"))
                    {
                        item.DataTokens.Add(token.Key, String.Join(", ", (string[])token.Value));
                    }
                    else if (token.Key.ValueEquals("httpMethods"))
                    {
                        item.HttpMethods = String.Join(", ", (string[])token.Value);
                    }
                    else if (!token.Key.ValueEquals("actionMethod"))
                    {
                        item.DataTokens.Add(token.Key, token.Value.ToString());
                    }
                }
            }

            return(item);
        }
Ejemplo n.º 4
0
        public static RouteLoggingInfo GetRouteInfo(string url,
            IDictionary<string, object> defaults,
            IDictionary<string, object> queryStringDefaults,
            IDictionary<string, object> constraints,
            IDictionary<string, object> queryStringConstraints,
            IDictionary<string, object> dataTokens)
        {
            var item = new RouteLoggingInfo { Url = url };

            //************************
            // Defaults

            var allDefaults = new Dictionary<string, object>();
            allDefaults.Merge(defaults);
            allDefaults.Merge(queryStringDefaults);

            foreach (var @default in allDefaults)
            {
                var defaultValue = @default.Value.ToString();
                item.Defaults.Add(@default.Key, defaultValue);
            }

            //************************
            // Constraints

            var allConstraints = new Dictionary<string, object>();
            allConstraints.Merge(constraints);
            allConstraints.Merge(queryStringConstraints);

            foreach (var constraint in allConstraints)
            {
                if (constraint.Value == null || constraint.Value is IInboundHttpMethodConstraint)
                    continue;

                var regexRouteConstraint = constraint.Value as RegexRouteConstraintBase;
                if (regexRouteConstraint != null)
                {
                    item.Constraints.Add(constraint.Key, regexRouteConstraint.Pattern);
                }
                else
                {
                    var constraintValue = constraint.Value;
                    var constraintDescriptions = new List<string>();

                    // Simple string regex constraint - from ASP.NET routing features
                    if (constraintValue is string)
                    {
                        constraintDescriptions.Add(constraintValue.ToString());
                    }
                    else
                    {
                        // Optional constraint - unwrap it and continue
                        var optionalConstraint = constraintValue as IOptionalRouteConstraint;
                        if (optionalConstraint != null)
                        {
                            constraintValue = optionalConstraint.Constraint;
                        }

                        // QueryString constraint - unwrap it and continue
                        var queryStringConstraint = constraintValue as IQueryStringRouteConstraint;
                        if (queryStringConstraint != null)
                        {
                            constraintValue = queryStringConstraint.Constraint;
                            constraintDescriptions.Add("QueryStringRouteConstraint");
                        }

                        // Compound constraint - join type names of the inner constraints
                        var compoundConstraint = constraintValue as ICompoundRouteConstraint;
                        if (compoundConstraint != null)
                        {
                            constraintDescriptions.AddRange(compoundConstraint.Constraints.Select(c => c.GetType().Name));
                        }
                        else if (constraintValue != null)
                        {
                            // Single constraint type
                            constraintDescriptions.Add(constraintValue.GetType().Name);
                        }
                    }

                    item.Constraints.Add(constraint.Key, String.Join(", ", constraintDescriptions));
                }
            }

            //************************
            // DataTokens

            if (dataTokens != null)
            {
                foreach (var token in dataTokens)
                {
                    if (token.Key.ValueEquals("namespaces"))
                    {
                        item.DataTokens.Add(token.Key, String.Join(", ", (string[])token.Value));
                    }
                    else if (token.Key.ValueEquals("httpMethods"))
                    {
                        item.HttpMethods = String.Join(", ", (string[])token.Value);
                    }
                    else if (!token.Key.ValueEquals("actionMethod"))
                    {
                        item.DataTokens.Add(token.Key, token.Value.ToString());
                    }
                }
            }

            return item;
        }