Halcyon.HAL.HALResponse.GetResolvedLinks C# (CSharp) Method

GetResolvedLinks() private static method

private static GetResolvedLinks ( IEnumerable links, object>.IDictionary properties, string linkBase ) : object>.Dictionary
links IEnumerable
properties object>.IDictionary
linkBase string
return object>.Dictionary
        private static Dictionary<string, object> GetResolvedLinks(IEnumerable<Link> links, IDictionary<string, object> properties, string linkBase)
        {
            var subsituted = links;

            if(properties.Any()) {
                subsituted = links.Select(l => l.CreateLink(properties)).ToList();
            }

            var resolved = subsituted;

            if(!String.IsNullOrWhiteSpace(linkBase)) {
                resolved = subsituted.Select(l => l.RebaseLink(linkBase)).ToList();
            }

            var grouped = resolved.GroupBy(r => r.Rel);

            var singles = grouped.Where(g => g.Count() <= 1 && g.All(l => !l.IsRelArray)).ToDictionary(k => k.Key, v => v.SingleOrDefault() as object);
            var lists = grouped.Where(g => g.Count() > 1 || g.Any(l => l.IsRelArray)).ToDictionary(k => k.Key, v => v.AsEnumerable() as object);

            var allLinks = singles.Concat(lists).ToDictionary(k => k.Key, v => v.Value);

            return allLinks;
        }