Пример #1
0
        public static void LogRoute(TextWriter writer, string name, AttributeRouteInfo 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(" ");
        }
        public static AttributeRouteInfo GetRouteInfo(string url,
                                                      IDictionary <string, object> defaults,
                                                      IDictionary <string, object> constraints,
                                                      IDictionary <string, object> dataTokens)
        {
            var item = new AttributeRouteInfo {
                Url = url
            };

            if (defaults != null)
            {
                foreach (var @default in defaults)
                {
                    item.Defaults.Add(@default.Key, @default.Value.ToString());
                }
            }

            if (constraints != null)
            {
                foreach (var constraint in constraints)
                {
                    if (constraint.Value == null)
                    {
                        continue;
                    }

                    if (constraint.Value is IRestfulHttpMethodConstraint)
                    {
                        item.HttpMethod = String.Join(", ", ((IRestfulHttpMethodConstraint)constraint.Value).AllowedMethods);
                    }
                    else if (constraint.Value is RegexRouteConstraintBase)
                    {
                        item.Constraints.Add(constraint.Key, ((RegexRouteConstraintBase)constraint.Value).Pattern);
                    }
                    else
                    {
                        item.Constraints.Add(constraint.Key, constraint.Value.ToString());
                    }
                }
            }

            if (dataTokens != null)
            {
                foreach (var token in dataTokens)
                {
                    if (token.Key.ValueEquals("namespaces"))
                    {
                        item.DataTokens.Add(token.Key, ((string[])token.Value).Aggregate((n1, n2) => n1 + ", " + n2));
                    }
                    else
                    {
                        item.DataTokens.Add(token.Key, token.Value.ToString());
                    }
                }
            }

            return(item);
        }
        public static AttributeRouteInfo GetRouteInfo(string url,
            IDictionary<string, object> defaults,
            IDictionary<string, object> constraints,
            IDictionary<string, object> dataTokens)
        {
            var item = new AttributeRouteInfo { Url = url };

            if (defaults != null)
            {
                foreach (var @default in defaults)
                    item.Defaults.Add(@default.Key, @default.Value.ToString());
            }

            if (constraints != null)
            {
                foreach (var constraint in constraints)
                {
                    if (constraint.Value == null)
                        continue;

                    if (constraint.Value is IRestfulHttpMethodConstraint)
                        item.HttpMethod = String.Join(", ", ((IRestfulHttpMethodConstraint)constraint.Value).AllowedMethods);
                    else if (constraint.Value is RegexRouteConstraintBase)
                        item.Constraints.Add(constraint.Key, ((RegexRouteConstraintBase)constraint.Value).Pattern);
                    else
                        item.Constraints.Add(constraint.Key, constraint.Value.ToString());
                }
            }

            if (dataTokens != null)
            {
                foreach (var token in dataTokens)
                {
                    if (token.Key.ValueEquals("namespaces"))
                        item.DataTokens.Add(token.Key, ((string[])token.Value).Aggregate((n1, n2) => n1 + ", " + n2));
                    else
                        item.DataTokens.Add(token.Key, token.Value.ToString());
                }
            }

            return item;
        }
Пример #4
0
        public static void LogRoute(TextWriter writer, string name, AttributeRouteInfo 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(" ");
        }
Пример #5
0
        public static AttributeRouteInfo GetRouteInfo(string url,
                                                      IDictionary <string, object> defaults,
                                                      IDictionary <string, object> constraints,
                                                      IDictionary <string, object> dataTokens)
        {
            var item = new AttributeRouteInfo {
                Url = url
            };

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

            if (defaults != null)
            {
                foreach (var @default in defaults)
                {
                    var defaultValue = @default.Value.ToString();
                    item.Defaults.Add(@default.Key, defaultValue.ValueOr("Optional"));
                }
            }

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

            if (constraints != null)
            {
                foreach (var constraint in constraints)
                {
                    if (constraint.Value == null)
                    {
                        continue;
                    }

                    if (constraint.Value is IRestfulHttpMethodConstraint)
                    {
                        item.HttpMethods = String.Join(", ", ((IRestfulHttpMethodConstraint)constraint.Value).AllowedMethods);
                    }
                    else if (constraint.Value is RegexRouteConstraintBase)
                    {
                        item.Constraints.Add(constraint.Key, ((RegexRouteConstraintBase)constraint.Value).Pattern);
                    }
                    else
                    {
                        var    constraintValue = constraint.Value;
                        var    constraintType  = constraint.Value.GetType();
                        string constraintAsString;

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

                            // Compound constraint - join type names of the inner constraints
                            var compoundConstraint = constraintValue as ICompoundRouteConstraintWrapper;
                            if (compoundConstraint != null)
                            {
                                var innerConstraintTypeNames = compoundConstraint.Constraints.Select(x => x.GetType().Name);
                                constraintAsString = String.Join(", ", innerConstraintTypeNames);
                            }
                            else
                            {
                                // Single constraint type
                                constraintAsString = constraintType.Name;
                            }
                        }

                        item.Constraints.Add(constraint.Key, constraintAsString);
                    }
                }
            }

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

            if (dataTokens != null)
            {
                foreach (var token in dataTokens)
                {
                    if (token.Key.ValueEquals("namespaces"))
                    {
                        item.DataTokens.Add(token.Key, ((string[])token.Value).Aggregate((n1, n2) => n1 + ", " + n2));
                    }
                    else
                    {
                        item.DataTokens.Add(token.Key, token.Value.ToString());
                    }
                }
            }

            return(item);
        }
        public static AttributeRouteInfo GetRouteInfo(string url,
            IDictionary<string, object> defaults,
            IDictionary<string, object> constraints,
            IDictionary<string, object> dataTokens)
        {
            var item = new AttributeRouteInfo { Url = url };

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

            if (defaults != null)
            {
                foreach (var @default in defaults)
                {
                    var defaultValue = @default.Value.ToString();
                    item.Defaults.Add(@default.Key, defaultValue.ValueOr("Optional"));
                }
            }

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

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

                    if (constraint.Value is RegexRouteConstraintBase)
                    {
                        item.Constraints.Add(constraint.Key, ((RegexRouteConstraintBase)constraint.Value).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 IOptionalRouteConstraintWrapper;
                            if (optionalConstraint != null)
                            {
                                constraintValue = optionalConstraint.Constraint;
                            }

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

                            // Compound constraint - join type names of the inner constraints
                            var compoundConstraint = constraintValue as ICompoundRouteConstraintWrapper;
                            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;
        }
        public static AttributeRouteInfo GetRouteInfo(string url,
            IDictionary<string, object> defaults,
            IDictionary<string, object> constraints,
            IDictionary<string, object> dataTokens)
        {
            var item = new AttributeRouteInfo { Url = url };

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

            if (defaults != null)
            {
                foreach (var @default in defaults)
                {
                    var defaultValue = @default.Value.ToString();
                    item.Defaults.Add(@default.Key, defaultValue.ValueOr("Optional"));
                }
            }

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

            if (constraints != null)
            {
                foreach (var constraint in constraints)
                {
                    if (constraint.Value == null)
                        continue;

                    if (constraint.Value is IRestfulHttpMethodConstraint)
                    {
                        item.HttpMethods = String.Join(", ", ((IRestfulHttpMethodConstraint)constraint.Value).AllowedMethods);
                    }
                    else if (constraint.Value is RegexRouteConstraintBase)
                    {
                        item.Constraints.Add(constraint.Key, ((RegexRouteConstraintBase)constraint.Value).Pattern);
                    }
                    else
                    {
                        var constraintValue = constraint.Value;
                        var constraintType = constraint.Value.GetType();
                        string constraintAsString;

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

                            // Compound constraint - join type names of the inner constraints
                            var compoundConstraint = constraintValue as ICompoundRouteConstraintWrapper;
                            if (compoundConstraint != null)
                            {
                                var innerConstraintTypeNames = compoundConstraint.Constraints.Select(x => x.GetType().Name);
                                constraintAsString = String.Join(", ", innerConstraintTypeNames);
                            }
                            else
                            {
                                // Single constraint type
                                constraintAsString = constraintType.Name;
                            }
                        }

                        item.Constraints.Add(constraint.Key, constraintAsString);
                    }
                }
            }

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

            if (dataTokens != null)
            {
                foreach (var token in dataTokens)
                {
                    if (token.Key.ValueEquals("namespaces"))
                        item.DataTokens.Add(token.Key, ((string[])token.Value).Aggregate((n1, n2) => n1 + ", " + n2));
                    else
                        item.DataTokens.Add(token.Key, token.Value.ToString());
                }
            }

            return item;
        }