protected internal IRouteDetails GetRouteDetails(Route route) { var routeDetails = new AspNetCoreRouteDetails(); routeDetails.HttpMethods = GetHttpMethods(route); routeDetails.RouteTemplate = route.RouteTemplate; return(routeDetails); }
protected internal IRouteDetails GetRouteDetails(ApiDescription desc) { var routeDetails = new AspNetCoreRouteDetails { HttpMethods = GetHttpMethods(desc) }; if (desc.ActionDescriptor.AttributeRouteInfo?.Template != null) { routeDetails.RouteTemplate = desc.ActionDescriptor.AttributeRouteInfo.Template; } else { ControllerActionDescriptor cdesc = desc.ActionDescriptor as ControllerActionDescriptor; routeDetails.RouteTemplate = $"/{cdesc.ControllerName}/{cdesc.ActionName}"; } List <string> produces = new List <string>(); foreach (var respTypes in desc.SupportedResponseTypes) { foreach (var format in respTypes.ApiResponseFormats) { produces.Add(format.MediaType); } } routeDetails.Produces = produces; List <string> consumes = new List <string>(); foreach (var reqTypes in desc.SupportedRequestFormats) { consumes.Add(reqTypes.MediaType); } routeDetails.Consumes = consumes; return(routeDetails); }
protected internal IRouteDetails GetRouteDetails(ActionDescriptor desc) { var routeDetails = new AspNetCoreRouteDetails { HttpMethods = desc.ActionConstraints?.OfType <HttpMethodActionConstraint>().SingleOrDefault()?.HttpMethods.ToList() ?? new List <string> { MappingDescription.ALL_HTTP_METHODS }, Consumes = new List <string>(), Produces = new List <string>() }; if (desc.AttributeRouteInfo?.Template != null) { routeDetails.RouteTemplate = desc.AttributeRouteInfo.Template; } else { var cdesc = desc as ControllerActionDescriptor; routeDetails.RouteTemplate = $"/{cdesc.ControllerName}/{cdesc.ActionName}"; } foreach (var filter in desc.FilterDescriptors.Where(f => f.Filter is ProducesAttribute).Select(f => (ProducesAttribute)f.Filter)) { foreach (var format in filter.ContentTypes) { routeDetails.Produces.Add(format); } } foreach (var filter in desc.FilterDescriptors.Where(f => f.Filter is ConsumesAttribute).Select(f => (ConsumesAttribute)f.Filter)) { foreach (var format in filter.ContentTypes) { routeDetails.Consumes.Add(format); } } return(routeDetails); }