Esempio n. 1
0
 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)));
 }
Esempio n. 2
0
        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);
 }