public static MetadataPlainObjects.Actions Generate(IActionConfiguration actionConfiguration, Dictionary <string, List <string> > routeRelations, object originalObject) { var result = new MetadataPlainObjects.Actions(); var mappingRules = actionConfiguration.MappingRules; var routeNameSubstitution = new DefaultRouteValueSubstitution(); result.AddRange(from mappingRule in mappingRules let apiDescription = mappingRule.ApiDescriptions.OrderBy(d => d.RelativePath.Length).FirstOrDefault() let isAction = mappingRule.Type == MappingRule.RuleType.ActionRule || (mappingRule.Type == MappingRule.RuleType.Default && apiDescription.HttpMethod != HttpMethod.Get) where apiDescription != null && isAction let absolutePath = LinkHelper.MakeAbsolutePath(routeNameSubstitution.Substitute(apiDescription.RelativePath, mappingRule, originalObject)) let routeNames = routeRelations[apiDescription.ID] select new MetadataPlainObjects.Action() { Href = absolutePath, Method = apiDescription.HttpMethod.Method, Title = apiDescription.Documentation, ActionName = routeNames.FirstOrDefault(), ActionFields = ActionFieldsGenerator.Generate(mappingRule, apiDescription, originalObject), ContentType = DeduceContentType(mappingRule, apiDescription, originalObject), Class = GetClassArray(mappingRule) }); return(result); }
public static MetadataPlainObjects.Actions Generate(IActionConfiguration actionConfiguration, Dictionary<string, List<string>> routeRelations, object originalObject) { var result = new MetadataPlainObjects.Actions(); var mappingRules = actionConfiguration.MappingRules; var routeNameSubstitution = new DefaultRouteValueSubstitution(); result.AddRange(from mappingRule in mappingRules let apiDescription = mappingRule.ApiDescriptions.OrderBy(d => d.RelativePath.Length).FirstOrDefault() let isAction = mappingRule.Type == MappingRule.RuleType.ActionRule || (mappingRule.Type == MappingRule.RuleType.Default && apiDescription.HttpMethod != HttpMethod.Get) where apiDescription != null && isAction let absolutePath = LinkHelper.MakeAbsolutePath(routeNameSubstitution.Substitute(apiDescription.RelativePath, mappingRule, originalObject)) let routeNames = routeRelations[apiDescription.ID] select new MetadataPlainObjects.Action() { Href = absolutePath, Method = apiDescription.HttpMethod.Method, Title = apiDescription.Documentation, ActionName = routeNames.FirstOrDefault(), ActionFields = ActionFieldsGenerator.Generate(mappingRule, apiDescription, originalObject), ContentType = DeduceContentType(mappingRule, apiDescription, originalObject), Class = GetClassArray(mappingRule) }); return result; }