public RouteHandlerLookupResult FindRequestHandler(string verb, string applicationPath, Uri uri) { var applicationRelativePath = uri.AbsolutePath.Remove(0, applicationPath.Length); var handlerIdentifier = RouteIdentifierBuilder.BuildIdentifier(verb, applicationRelativePath); return(FindNode(_tree, handlerIdentifier, new Dictionary <string, string>())); }
internal static RouteHandlerLookupNode BuildRouteHandlerLookupTree(IEnumerable <Type> requestHandlers) { var tree = new RouteHandlerLookupNode(); var knownRouteFragmentSets = new List <IList <string> >(); foreach (var requestHandler in requestHandlers) { var routeAttributes = RequestHandlerDescriptor.GetRouteAttributes(requestHandler); if (routeAttributes.Count == 0) { throw new InvalidOperationException(ExceptionMessageBuilder.BuildMissingRouteMessage(requestHandler)); } var routeHandlerVerb = RequestHandlerDescriptor.GetVerb(requestHandler); var routeFragmentSets = routeAttributes.Select(x => RouteIdentifierBuilder.BuildIdentifier(routeHandlerVerb, x.Template)).ToList(); knownRouteFragmentSets.AddRange(routeFragmentSets); ScanForUnreachableRouteHandlers(knownRouteFragmentSets, routeAttributes.First().Template, requestHandler); ScanForUnreachableRouteParameters(routeFragmentSets, routeAttributes, requestHandler); foreach (var routeFragementSet in routeFragmentSets) { tree.AddNode(routeFragementSet, requestHandler); } } return(tree); }
public RouteHandlerLookupResult FindRequestHandler(string verb, Uri uri) { var handlerIdentifier = RouteIdentifierBuilder.BuildIdentifier(verb, uri.AbsolutePath); return(FindNode(_tree, handlerIdentifier, new Dictionary <string, string>())); }