public IRouteDefinition Build(ActionCall call) { var className = call.HandlerType.Name.ToLower() .Replace("endpoints", "") .Replace("endpoint", "") .Replace("controller", ""); RouteDefinition route = null; if (RouteDefinition.VERBS.Any(x => x.EqualsIgnoreCase(call.Method.Name))) { route = new RouteDefinition(className); route.AddHttpMethodConstraint(call.Method.Name.ToUpper()); } else { route = new RouteDefinition("{0}/{1}".ToFormat(className, call.Method.Name.ToLowerInvariant())); } if (call.InputType() != null) { if (call.InputType().CanBeCastTo <ResourcePath>()) { ResourcePath.AddResourcePathInputs(route); } else { AddBasicRouteInputs(call, route); } } return(route); }
public static void Alter(IRouteDefinition route, ActionCall call) { var properties = call.HasInput ? new TypeDescriptorCache().GetPropertiesFor(call.InputType()).Keys : new string[0]; Alter(route, call.Method.Name, properties); if (call.HasInput) { route.ApplyInputType(call.InputType()); if (call.InputType().CanBeCastTo <ResourcePath>()) { ResourcePath.AddResourcePathInputs(route); } } }