public static MetadataPlainObjects.Links Generate(IActionConfiguration actionConfiguration, Dictionary <string, List <string> > routeRelations, object originalObject) { var result = new MetadataPlainObjects.Links(); 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 isLink = mappingRule.Type == MappingRule.RuleType.LinkRule || (mappingRule.Type == MappingRule.RuleType.Default && apiDescription.HttpMethod == HttpMethod.Get) where apiDescription != null && isLink let absolutePath = LinkHelper.MakeAbsolutePath(routeNameSubstitution.Substitute(apiDescription.RelativePath, mappingRule, originalObject)) select new MetadataPlainObjects.SirenLink() { Href = absolutePath, RelList = GetRelList(mappingRule, apiDescription, routeRelations[apiDescription.ID]) }); return(result); }
public static MetadataPlainObjects.Links Generate(IActionConfiguration actionConfiguration, Dictionary<string, List<string>> routeRelations, object originalObject) { var result = new MetadataPlainObjects.Links(); 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 isLink = mappingRule.Type == MappingRule.RuleType.LinkRule || (mappingRule.Type == MappingRule.RuleType.Default && apiDescription.HttpMethod == HttpMethod.Get) where apiDescription != null && isLink let absolutePath = LinkHelper.MakeAbsolutePath(routeNameSubstitution.Substitute(apiDescription.RelativePath, mappingRule, originalObject)) select new MetadataPlainObjects.SirenLink() { Href = absolutePath, RelList = GetRelList(mappingRule, apiDescription, routeRelations[apiDescription.ID]) }); return result; }