public RouteFromParametersTests() { var conventions = new RoutingConventions(); _sut = new RouteFromParametersConvention(); var routes = _sut.Build(new RouteBuilderInfo(new ActionCall(typeof(MyController).GetMethod("GetSomething")), conventions)); _route = routes.First(); }
public static void LoadModules(this RoutingConventions policy, Assembly asm) { policy .LoadModule( asm.GetTypesDerivedFrom <RoutingConventionsModule>(true).Select(t => (RoutingConventionsModule)t.CreateInstance()).ToArray() ); }
public static RoutingConventions RegisterControllers(this RoutingConventions policy, Func <Type, IEnumerable <MethodInfo> > actionMatch, params Type[] controllers) { foreach (var c in controllers) { policy.Actions.AddRange(actionMatch(c).Select(m => new ActionCall(m, c))); } return(policy); }
public void default_builder_yields_no_routes() { var sut = new RoutingConventions(); sut.RegisterController<SomeController>(); var routes = sut.BuildRoutes(); routes.Should().BeEmpty(); }
/// <summary> /// This conventions applies only for GET requests /// </summary> /// <param name="policy"></param> /// <returns></returns> public static RoutingConventions UseOneModelInHandlerConvention(this RoutingConventions policy, Predicate <ActionCall> applyTo = null) { var convention = new OneModelInHandlerConvention(applyTo); policy.Add(convention); return(policy); }
public static void Run() { RoutingConventions.Configure(c => { c.RegisterControllers(typeof(ConfigTask_Routing).Assembly); c.UseOneModelInHandlerConvention(); c.HomeIs <PostsListController>(d => d.Get(new PagedInput())); }); }
/// <summary> /// Configures routing conventions and applies them to RouteTable /// </summary> /// <param name="cfg"></param> public static void Configure(Action <RoutingConventions> cfg) { cfg.MustNotBeNull(); var routing = new RoutingConventions(); cfg(routing); var routes = routing.BuildRoutes(); foreach (var route in routes) { RouteTable.Routes.Add(route); } }
/// <summary> /// Configures routing conventions and applies them route collection /// </summary> /// <param name="cfg"></param> /// <param name="httpConfiguration"></param> public static void Configure(Action <RoutingConventions> cfg, HttpConfiguration httpConfiguration) { cfg.MustNotBeNull(); var routing = new RoutingConventions(); cfg(routing); var routes = routing.BuildRoutes(); foreach (var route in routes) { httpConfiguration.Routes.Add("", route); } }
public void handles_one_model_in_argument_properly() { var sut = new RoutingConventions(); sut.UseOneModelInHandlerConvention(); sut.RegisterController<ModelFixtureController>(); var id = 2; sut.HomeIs<ModelFixtureController>(f => f.Get(new ModelHandlerInput(){Page = 67})); var routes = sut.BuildRoutes(); var def = routes.Last(); def.Url.Should().Be("{*catch}"); def.Defaults["controller"].Should().Be("ModelFixture"); def.Defaults["action"].Should().Be("Get"); def.Defaults["page"].Should().Be(67); }
public void handles_argument_list_properly() { var sut = new RoutingConventions(); sut.UseHandlerConvention(); sut.RegisterController<HandlerFixtureController>(); var id = 2; sut.HomeIs<HandlerFixtureController>(f => f.Get(id)); var routes = sut.BuildRoutes(); routes.Count().Should().Be(2); var def = routes.Last(); def.Url.Should().Be("{*catch}"); def.Defaults["controller"].Should().Be("HandlerFixture"); def.Defaults["action"].Should().Be("Get"); def.Defaults["page"].Should().Be(2); }
public void get_route_is_generated_from_input_model() { var sut = new RoutingConventions(); sut.UseOneModelInHandlerConvention(); sut.RegisterController<ModelFixtureController>(); var routes = sut.BuildRoutes(); routes.Count().Should().Be(2); var def = routes.First(); def.Url.Should().Be("ModelFixture/{page}/{text}/{optional}"); def.Defaults["controller"].Should().Be("ModelFixture"); def.Defaults["action"].Should().Be("Get"); def.Defaults.ContainsKey("page").Should().BeFalse(); def.Defaults["text"].Should().Be(UrlParameter.Optional); def.Defaults["optional"].Should().Be(UrlParameter.Optional); }
public void post_route_ignores_input_model() { var sut = new RoutingConventions(); sut.UseOneModelInHandlerConvention(); sut.RegisterController<ModelFixtureController>(); var routes = sut.BuildRoutes(); routes.Count().Should().Be(2); var def = routes.Last(); def.Url.Should().Be("ModelFixture"); def.Defaults["controller"].Should().Be("ModelFixture"); def.Defaults["action"].Should().Be("Post"); def.Defaults.ContainsKey("page").Should().BeFalse(); def.Defaults.ContainsKey("text").Should().BeFalse(); def.Defaults.ContainsKey("optional").Should().BeFalse(); }
public void post_route_ignores_input_model() { var sut = new RoutingConventions(); sut.UseOneModelInHandlerConvention(); sut.RegisterController <ModelFixtureController>(); var routes = sut.BuildRoutes(); routes.Count().Should().Be(2); var def = routes.Last(); def.Url.Should().Be("ModelFixture"); def.Defaults["controller"].Should().Be("ModelFixture"); def.Defaults["action"].Should().Be("Post"); def.Defaults.ContainsKey("page").Should().BeFalse(); def.Defaults.ContainsKey("text").Should().BeFalse(); def.Defaults.ContainsKey("optional").Should().BeFalse(); }
public void handles_argument_list_properly() { var sut = new RoutingConventions(); sut.UseHandlerConvention(); sut.RegisterController <HandlerFixtureController>(); var id = 2; sut.HomeIs <HandlerFixtureController>(f => f.Get(id)); var routes = sut.BuildRoutes(); routes.Count().Should().Be(2); var def = routes.Last(); def.Url.Should().Be("{*catch}"); def.Defaults["controller"].Should().Be("HandlerFixture"); def.Defaults["action"].Should().Be("Get"); def.Defaults["page"].Should().Be(2); }
public void route_is_generated_from_input_model() { var sut = new RoutingConventions(); sut.Add((IBuildRoutes) new OneModelInHandlerConvention()); sut.RegisterController <ModelFixtureController>(); var routes = sut.BuildRoutes(); routes.Count().Should().Be(1); var def = routes.Last(); def.RouteTemplate.Should().Be("ModelFixture/{page}/{text}/{optional}"); def.Defaults["controller"].Should().Be("ModelFixture"); def.Defaults["action"].Should().Be("Get"); def.Defaults.ContainsKey("page").Should().BeFalse(); def.Defaults["text"].Should().Be(RouteParameter.Optional); def.Defaults["optional"].Should().Be(RouteParameter.Optional); }
public void handles_one_model_in_argument_properly() { var sut = new RoutingConventions(); sut.UseOneModelInHandlerConvention(); sut.RegisterController <ModelFixtureController>(); var id = 2; sut.HomeIs <ModelFixtureController>(f => f.Get(new ModelHandlerInput() { Page = 67 })); var routes = sut.BuildRoutes(); var def = routes.Last(); def.Url.Should().Be("{*catch}"); def.Defaults["controller"].Should().Be("ModelFixture"); def.Defaults["action"].Should().Be("Get"); def.Defaults["page"].Should().Be(67); }
/// <summary> /// Scans assembly and registers routing convetions but not configuration modules. Uses dependency resolver /// </summary> /// <param name="policy"></param> /// <param name="asm"></param> /// <param name="res">Null means it uses the current dependecy resolver</param> public static RoutingConventions RegisterConventions(this RoutingConventions policy, Assembly asm, IDependencyResolver res = null) { if (res == null) { #if WEBAPI throw new ArgumentNullException("res", "A dependency resolver instance is required for WebApi"); #else res = DependencyResolver.Current; #endif } foreach (var builder in asm.GetTypesDerivedFrom <IBuildRoutes>()) { policy.Add(res.GetInstance <IBuildRoutes>(builder)); } foreach (var modifier in asm.GetTypesDerivedFrom <IModifyRoute>()) { policy.Add(res.GetInstance <IModifyRoute>(modifier)); } return(policy); }
public RouteBuilderInfo(ActionCall call, RoutingConventions conventions) { _conventions = conventions; ActionCall = call; }
public LambdaConventionConfigurator(RoutingConventions parent, Predicate <ActionCall> predicate) { _parent = parent; _lambda = new LambdaConventionHost(predicate); }
public static RoutingConventions UseHandlerConvention(this RoutingConventions policy) { policy.Add(new HandlerRouteConvention()); return(policy); }
public HomeActionCall(RoutingConventions parent) { _parent = parent; }
/// <summary> /// Registers actions from the provided types. /// All types should be Controllers /// </summary> /// <param name="policy"></param> /// <param name="controllers"></param> public static RoutingConventions RegisterControllers(this RoutingConventions policy, params Type[] controllers) { return(RegisterControllers(policy, ControllerExtensions.GetActionMethods, controllers)); }
public static RoutingConventions RegisterController <T>(this RoutingConventions policy) where T : Controller #endif { policy.RegisterControllers(typeof(T)); return(policy); }
///// <summary> ///// Register as actions types matching a criteria ///// </summary> ///// <param name="policy"></param> ///// <param name="asm"></param> ///// <param name="match"></param> //public static RoutingConventions RegisterController(this RoutingConventions policy, Assembly asm, Func<Type, bool> match) //{ // RegisterController(policy, asm.GetTypes().Where(match).ToArray()); // return policy; //} /// <summary> /// Registers actions from controller /// </summary> /// <typeparam name="T"></typeparam> /// <param name="policy"></param> #if WEBAPI public static RoutingConventions RegisterController <T>(this RoutingConventions policy) where T : ApiController
public static RoutingConventions RegisterControllers(this RoutingConventions policy, Assembly asm, Func <Type, IEnumerable <MethodInfo> > actionMatch) { return(RegisterControllers(policy, actionMatch, asm.GetControllerTypes().ToArray())); }
/// <summary> /// Register types deriving from Controller class /// </summary> /// <param name="policy"></param> /// <param name="asm"></param> public static RoutingConventions RegisterControllers(this RoutingConventions policy, Assembly asm) { return(RegisterControllers(policy, asm.GetControllerTypes().ToArray())); }
public LambdaConventionConfigurator(RoutingConventions parent,Predicate<ActionCall> predicate) { _parent = parent; _lambda = new LambdaConventionHost(predicate); }