private static void ObtainMethodDetailsFromVerbs(this MethodInfo method, ref RouteAttribute route, ref OnVerbAttribute verb) { string methodNameWithoutVerb = null; Verb detectedVerb = null; string methodName = method.Name; Verb.Verbs.SkipWhile(item => (methodNameWithoutVerb = Regex.Replace(methodName, "^" + (detectedVerb = item).ToString(), String.Empty, RegexOptions.IgnoreCase)) == methodName).ToArray(); if ((route == null) && (methodNameWithoutVerb != null) && (methodNameWithoutVerb != methodName)) { route = new RouteAttribute((methodNameWithoutVerb.Length == 0 ? "/" : methodNameWithoutVerb).ToLower()); } if ((verb == null) && (methodNameWithoutVerb != null) && (methodNameWithoutVerb != methodName) && (detectedVerb != null)) { verb = new OnVerbAttribute(detectedVerb); } }
private static void ObtainMethodDetailsFromPopularNames(this MethodInfo method, ref RouteAttribute route, ref OnVerbAttribute verb) { string methodNameWithoutVerb = null; Verb detectedVerb = null; string methodName = method.Name; PopularNameMappings.SkipWhile(item => (methodNameWithoutVerb = Regex.Replace(methodName, "^" + item.Key + "((?=[A-Z0-9])|$)", ((detectedVerb = item.Value) != null ? String.Empty : String.Empty), RegexOptions.IgnoreCase)) == methodName).ToArray(); if ((route == null) && (methodNameWithoutVerb != null) && (methodNameWithoutVerb != methodName)) { route = new RouteAttribute((methodNameWithoutVerb.Length == 0 ? "/" : methodNameWithoutVerb).ToLower()); } if ((verb == null) && (methodNameWithoutVerb != null) && (methodNameWithoutVerb != methodName) && (detectedVerb != null)) { verb = new OnVerbAttribute(detectedVerb); } }
internal static RouteAttribute GetDefaults(this MethodInfo method, ICollection <OnVerbAttribute> verbs, out bool explicitRoute) { OnVerbAttribute verb = null; verbs.AddRange(method.GetCustomAttributes <OnVerbAttribute>(true) ?? method.DeclaringType.GetInterfaces().Select(@interface => @interface.GetCustomAttribute <OnVerbAttribute>())); var route = method.GetCustomAttribute <RouteAttribute>(true) ?? method.DeclaringType.GetInterfaces().Select(@interface => @interface.GetCustomAttribute <RouteAttribute>()).FirstOrDefault(); explicitRoute = (route != null); if ((route == null) || (!verbs.Any())) { method.ObtainMethodDetailsFromVerbs(ref route, ref verb); if (verb != null) { verbs.Add(verb); verb = null; } } if ((route == null) || (!verbs.Any())) { method.ObtainMethodDetailsFromPopularNames(ref route, ref verb); if (verb != null) { verbs.Add(verb); } } if (route == null) { route = new RouteAttribute(method.Name.ToLower()); } if (!verbs.Any()) { verbs.Add(new OnVerbAttribute(Verb.GET)); } return(route); }