public static IEnumerable <IRouteConvention> ThatApplyTo( this IEnumerable <IRouteConvention> routeConventions, ActionMethod actionMethod, ActionSourceContext context, Configuration configuration) { return(configuration.RouteConventions.ThatApplyTo(routeConventions, new RouteContext(configuration, context.HttpConfiguration, actionMethod))); }
public static List <RouteDescriptor> GetRouteDescriptors( this IRouteConvention routeConvention, ActionSourceContext context, ActionMethod actionMethod) { return(routeConvention.GetRouteDescriptors(new RouteContext( context.Configuration, context.HttpConfiguration, actionMethod))); }
public void Should_conditionally_apply_route_conventions_by_instance() { var actionSourceContext = new ActionSourceContext(_configuration, new HttpConfiguration()); _routeConvention1.AppliesToPredicate = x => x.ActionMethod .HandlerType.Type == typeof(Handler1); _routeConvention2.AppliesToPredicate = x => x.ActionMethod .HandlerType.Type == typeof(Handler2) && x.ActionMethod.Method.Name == nameof(Handler2.Post); var actions = _actionSource.GetActions(actionSourceContext); actions.Count.ShouldEqual(3); var action = actions.FirstOrDefault(x => x.Action == _handler1Get); action.ShouldNotBeNull(); action.Route.Method.ShouldEqual(_handler1Get.Method.Name); action.Route.Url.ShouldEqual(_handler1Get.FullName); action = actions.FirstOrDefault(x => x.Action == _handler1Post); action.ShouldNotBeNull(); action.Route.Method.ShouldEqual(_handler1Post.Method.Name); action.Route.Url.ShouldEqual(_handler1Post.FullName); action = actions.FirstOrDefault(x => x.Action == _handler2Post); action.ShouldNotBeNull(); action.Route.Method.ShouldEqual(_handler2Post.Method.Name); action.Route.Url.ShouldEqual(_handler2Post.FullName); _routeConvention1.AppliesToCalled.ShouldBeTrue(); _routeConvention1.AppliesToContext.HttpConfiguration .ShouldEqual(actionSourceContext.HttpConfiguration); _routeConvention1.GetRouteDescriptorsCalled.ShouldBeTrue(); _routeConvention1.GetRouteDescriptorsContext.HttpConfiguration .ShouldEqual(actionSourceContext.HttpConfiguration); _routeConvention1.GetRouteDescriptorsContext.ActionMethod.ShouldNotBeNull(); _routeConvention2.AppliesToCalled.ShouldBeTrue(); _routeConvention2.AppliesToContext.HttpConfiguration .ShouldEqual(actionSourceContext.HttpConfiguration); _routeConvention2.GetRouteDescriptorsCalled.ShouldBeTrue(); _routeConvention2.GetRouteDescriptorsContext.HttpConfiguration .ShouldEqual(actionSourceContext.HttpConfiguration); _routeConvention2.GetRouteDescriptorsContext.ActionMethod.ShouldNotBeNull(); }
public void Should_conditionally_query_action_method_sources_from_configuration() { var actionSourceContext = new ActionSourceContext(_configuration, new HttpConfiguration()); _configuration.ActionMethodSources.Append <TestActionMethodSource1>(x => false); var actions = _actionSource.GetActions(actionSourceContext); actions.Count.ShouldEqual(4); _actionMethodSource1.AppliesToCalled.ShouldBeFalse(); _actionMethodSource1.GetActionMethodsCalled.ShouldBeFalse(); _actionMethodSource2.AppliesToCalled.ShouldBeTrue(); _actionMethodSource2.AppliesToContext.HttpConfiguration .ShouldEqual(actionSourceContext.HttpConfiguration); _actionMethodSource2.GetActionMethodsCalled.ShouldBeTrue(); _actionMethodSource2.GetActionMethodsContext.HttpConfiguration .ShouldEqual(actionSourceContext.HttpConfiguration); }
public List <ActionDescriptor> GetActions(ActionSourceContext context) { var configuration = new Configuration(); new ConfigurationDsl(configuration) .IncludeTypeAssembly <DiagnosticsActionSource>() .OnlyIncludeHandlersUnder <DiagnosticsActionSource>() .ExcludeTypeNamespaceFromUrl <DiagnosticsActionSource>(); var actionMethodSource = new DefaultActionMethodSource(configuration, _typeCache); var urlConvention = new LambdaUrlConvention((a, s) => _configuration .DiagnosticsUrl.Trim('/').AsList(s).Join("/").AsArray()); var urlConventions = new List <IUrlConvention> { urlConvention }; var routeConvention = new DefaultRouteConvention(configuration, urlConventions); return(new DefaultActionSource(actionMethodSource.AsList(), routeConvention.AsList(), configuration, _typeCache) .GetActions(new ActionSourceContext(configuration, context.HttpConfiguration))); }
public bool AppliesTo(ActionSourceContext context) { return(_configuration.EnableDiagnostics); }