public void PathParserCanWalk() { var pathParser = new PathRouteData(new Uri("http://localhost/foo"), 0); pathParser.MoveToNext(); Assert.Equal("foo", pathParser.CurrentSegment); Assert.True(pathParser.EndOfPath()); }
public void UseRouteDataToResolveUriTemplate() { var routeData = new PathRouteData(new Uri("http://foo"), 0); routeData.Values.Add("foo","1"); routeData.Values.Add("bar", "2"); routeData.Values.Add("baz", 3); var link = new Link() {Target = new Uri("http://localhost/{?foo,bar,baz}")}; foreach (var value in routeData.Values) { link.SetParameter(value.Key,value.Value); } var request = link.CreateRequest(); Assert.Equal("http://localhost/?foo=1&bar=2&baz=3", request.RequestUri.AbsoluteUri); }
internal PathRouteData RetrieveRouteData(HttpRequestMessage request) { PathRouteData pathRouteData; if (request.Properties.ContainsKey(HttpPropertyKeys.HttpRouteDataKey)) { //MVC Host requires a single route to trigger MessageHandlers to kick in // replace that RouteData with our PathRouteData. var currentRouteData = GetRouteData(request); pathRouteData = currentRouteData as PathRouteData; if (pathRouteData == null) { pathRouteData = CreatePathRouteDate(request); // Do we need to copy over the properties??? foreach (var value in currentRouteData.Values) { pathRouteData.Values.Add(value.Key, value.Value); } request.Properties[HttpPropertyKeys.HttpRouteDataKey] = pathRouteData; } } else { // Self host will not create RouteData itself pathRouteData = new PathRouteData(request.RequestUri, _InitalPosition); request.Properties.Add(new KeyValuePair <string, object>(HttpPropertyKeys.HttpRouteDataKey, pathRouteData)); } // Copy over values provided during Router setup if (_Defaults != null) { foreach (var value in _Defaults) { pathRouteData.Values[value.Key] = value.Value; } } return(pathRouteData); }
public void PathParserWithEmptyUri() { var pathParser = new PathRouteData(new Uri("http://localhost"), 0); Assert.True(pathParser.EndOfPath()); }
public void PathParserShouldInitializeWithRootAsFirstSegment() { var pathParser = new PathRouteData(new Uri("http://localhost/Desktop"), 0); Assert.Equal("", pathParser.CurrentSegment); }