public void ParseCatchAllVerb() { var pattern = HttpRoutePattern.Parse("/a/{b=*}/**:verb"); var adapter = JsonTranscodingRouteAdapter.Parse(pattern); Assert.Equal("/a/{b}/{**__Discard_2}", adapter.ResolvedRouteTemplate); }
public void ParseManyVariables() { var pattern = HttpRoutePattern.Parse("/{a}/{b}/{c}"); var adapter = JsonTranscodingRouteAdapter.Parse(pattern); Assert.Equal("/{a}/{b}/{c}", adapter.ResolvedRouteTemplate); }
public void ParseAnyAndCatchAllSegment2() { var pattern = HttpRoutePattern.Parse("/*/a/**"); var adapter = JsonTranscodingRouteAdapter.Parse(pattern); Assert.Equal("/{__Discard_0}/a/{**__Discard_2}", adapter.ResolvedRouteTemplate); Assert.Empty(adapter.RewriteVariableActions); }
public void ParseVerb() { var pattern = HttpRoutePattern.Parse("/a:foo"); var adapter = JsonTranscodingRouteAdapter.Parse(pattern); Assert.Equal("/a", adapter.ResolvedRouteTemplate); Assert.Empty(adapter.RewriteVariableActions); }
public void ParseAnySegment() { var pattern = HttpRoutePattern.Parse("/*") !; var adapter = JsonTranscodingRouteAdapter.Parse(pattern); Assert.Equal("/{__Discard_0}", adapter.ResolvedRouteTemplate); Assert.Empty(adapter.RewriteVariableActions); }
public void ParseMultipleVariables() { var pattern = HttpRoutePattern.Parse("/shelves/{shelf}/books/{book}"); var adapter = JsonTranscodingRouteAdapter.Parse(pattern); Assert.Equal("/shelves/{shelf}/books/{book}", adapter.ResolvedRouteTemplate); Assert.Empty(adapter.RewriteVariableActions); }
public void ParseComplexCatchAll() { var pattern = HttpRoutePattern.Parse("/a/{b=**}"); var adapter = JsonTranscodingRouteAdapter.Parse(pattern); Assert.Equal("/a/{**b}", adapter.ResolvedRouteTemplate); Assert.Empty(adapter.RewriteVariableActions); }
public void ParseComplexNestedFieldPath() { var pattern = HttpRoutePattern.Parse("/a/{a.b.c=*}"); var adapter = JsonTranscodingRouteAdapter.Parse(pattern); Assert.Equal("/a/{a.b.c}", adapter.ResolvedRouteTemplate); Assert.Empty(adapter.RewriteVariableActions); }
public void ParseComplexPathCatchAll() { var pattern = HttpRoutePattern.Parse("/a/{b=c/**}"); var adapter = JsonTranscodingRouteAdapter.Parse(pattern); Assert.Equal("/a/c/{**__Complex_b_2}", adapter.ResolvedRouteTemplate); var httpContext = new DefaultHttpContext(); httpContext.Request.RouteValues = new RouteValueDictionary { { "__Complex_b_2", "value" } }; adapter.RewriteVariableActions[0](httpContext); Assert.Equal("c/value", httpContext.Request.RouteValues["b"]); }
public void ParseComplexPrefixSuffixCatchAll() { var pattern = HttpRoutePattern.Parse("/{x.y.z=a/**/b}/c/d"); var adapter = JsonTranscodingRouteAdapter.Parse(pattern); Assert.Equal("/a/{**__Complex_x.y.z_1:regex(b/c/d$)}", adapter.ResolvedRouteTemplate); var httpContext = new DefaultHttpContext(); httpContext.Request.RouteValues = new RouteValueDictionary { { "__Complex_x.y.z_1", "my/value/b/c/d" } }; adapter.RewriteVariableActions[0](httpContext); Assert.Equal("a/my/value/b", httpContext.Request.RouteValues["x.y.z"]); }
public void ParseComplexVariable() { var route = HttpRoutePattern.Parse("/v1/{book.name=shelves/*/books/*}"); var adapter = JsonTranscodingRouteAdapter.Parse(route); Assert.Equal("/v1/shelves/{__Complex_book.name_2}/books/{__Complex_book.name_4}", adapter.ResolvedRouteTemplate); Assert.Single(adapter.RewriteVariableActions); var httpContext = new DefaultHttpContext(); httpContext.Request.RouteValues = new RouteValueDictionary { { "__Complex_book.name_2", "first" }, { "__Complex_book.name_4", "second" } }; adapter.RewriteVariableActions[0](httpContext); Assert.Equal("shelves/first/books/second", httpContext.Request.RouteValues["book.name"]); }
public CallHandlerDescriptorInfo( FieldDescriptor?responseBodyDescriptor, MessageDescriptor?bodyDescriptor, bool bodyDescriptorRepeated, List <FieldDescriptor>?bodyFieldDescriptors, Dictionary <string, List <FieldDescriptor> > routeParameterDescriptors, JsonTranscodingRouteAdapter routeAdapter) { ResponseBodyDescriptor = responseBodyDescriptor; BodyDescriptor = bodyDescriptor; BodyDescriptorRepeated = bodyDescriptorRepeated; BodyFieldDescriptors = bodyFieldDescriptors; RouteParameterDescriptors = routeParameterDescriptors; RouteAdapter = routeAdapter; if (BodyFieldDescriptors != null) { BodyFieldDescriptorsPath = string.Join('.', BodyFieldDescriptors.Select(d => d.Name)); } PathDescriptorsCache = new ConcurrentDictionary <string, List <FieldDescriptor>?>(); }