Exemple #1
0
        public static void Decorate(this IEnumerable <IHttpRouteDecorator>
                                    routeDecorators, HttpRouteConfiguration routeConfiguration)
        {
            var context = new HttpRouteDecoratorContext(routeConfiguration);

            routeDecorators.ForEach(x => x.Decorate(context));
        }
Exemple #2
0
 public static IEnumerable <IHttpRouteDecorator> ThatApplyTo(
     this IEnumerable <IHttpRouteDecorator> routeDecorators,
     ActionDescriptor actionDescriptor,
     HttpRouteConfiguration routeConfiguration,
     Configuration configuration,
     HttpConfiguration httpConfiguration)
 {
     return(configuration.HttpRouteDecorators
            .ThatAppliesTo(routeDecorators,
                           new ActionConfigurationContext(configuration, httpConfiguration,
                                                          actionDescriptor.Action, actionDescriptor.Route),
                           new HttpRouteDecoratorContext(routeConfiguration)));
 }
Exemple #3
0
        public void Map(ActionDescriptor actionDescriptor)
        {
            var routeConfiguration = new HttpRouteConfiguration
            {
                Name              = actionDescriptor.Route.Id,
                RouteTemplate     = actionDescriptor.Route.Url.RemoveConstraints(),
                MessageHandler    = _container.GetInstance <ActionMessageHandler>(actionDescriptor),
                Constraints       = actionDescriptor.Route.GetRouteConstraints(_constraintResolver),
                MethodConstraints = new List <string> {
                    actionDescriptor.Route.Method
                }
            };

            _routeDecorators.ThatApplyTo(actionDescriptor, routeConfiguration,
                                         _configuration, _httpConfiguration).Decorate(routeConfiguration);

            _httpConfiguration.Routes.MapHttpRoute(routeConfiguration.Name,
                                                   routeConfiguration.RouteTemplate, null,
                                                   handler: routeConfiguration.MessageHandler,
                                                   constraints: routeConfiguration.Constraints
                                                   .AddMethodConstraints(routeConfiguration.MethodConstraints));
        }
 public HttpRouteDecoratorContext(HttpRouteConfiguration route)
 {
     Route = route;
 }