public static Create ( INancyModule module, Nancy.Routing.Route route ) : |
||
module | INancyModule | |
route | Nancy.Routing.Route | |
return |
public static RouteId Create(INancyModule module, Route route)
{
var routeId = new RouteId { Module = module };
if (!string.IsNullOrEmpty(route.Description.Name))
{
routeId.Name = route.Description.Name;
}
else
{
routeId.Method = route.Description.Method.ToHttpMethod();
routeId.Path = route.Description.Path.EnsureForwardSlash();
}
return routeId;
}
RouteId::Create ( INancyModule module, |
private IEnumerable <SwaggerRouteData> ToSwaggerRouteData(INancyModule module) { Func <IEnumerable <RouteAttribute>, RouteId> getRouteId = (attrs) => { return(attrs.Select(attr => RouteId.Create(module, attr)) .FirstOrDefault(routeId => routeId.IsValid)); }; // Discover route handlers and put them in a Dictionary<RouteId, MethodInfo> var routeHandlers = module.GetType().GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static) .Select(methodInfo => new { RouteId = getRouteId(methodInfo.GetCustomAttributes <RouteAttribute>()), MethodInfo = methodInfo }) .Where(x => x.RouteId.IsValid) .ToDictionary( x => x.RouteId, x => x.MethodInfo ); return(module.Routes .Select(route => CreateSwaggerRouteData(module, route, routeHandlers))); }