public CollectionJsonMediaTypeFormatter(ICollectionSettings <T> collectionSettings, MappingEngine mappingEngine) { _collectionSettings = collectionSettings; _mappingEngine = mappingEngine; SupportedMediaTypes.Clear(); SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/vnd.collection+json")); }
public static IEnumerable <T> Sort <T>(this IEnumerable <T> contents, ICollectionSettings settings) where T : IContent { if (contents == null) { throw new ArgumentNullException(nameof(contents)); } // ReSharper disable InvertIf if (settings?.Comparers != null && settings.Comparers.Any()) { var comparer = new CompositeComparer <IContent>(settings.Comparers); contents = contents.OrderBy(content => content, comparer); } // ReSharper restore InvertIf return(contents); }
public static IEnumerable <T> Filter <T>(this IEnumerable <T> contents, ICollectionSettings settings) where T : IContent { if (contents == null) { throw new ArgumentNullException(nameof(contents)); } // ReSharper disable InvertIf if (settings?.Filters != null && settings.Filters.Any()) { var filter = new CompositeFilter(settings.Filters); contents = contents.Where(content => !filter.ShouldFilter(content)); } // ReSharper restore InvertIf return(contents); }
public static IEnumerable <T> DuplicateHandled <T>(this IEnumerable <T> contents, ICollectionSettings settings) where T : IContent { if (contents == null) { throw new ArgumentNullException(nameof(contents)); } // Guess this is enough because content comes from the cache and there is reference-equality. return(!(settings?.IgnoreDuplicates ?? false) ? contents.Distinct() : contents); // If it is not enough then we can use this: //return !(settings?.IgnoreDuplicates ?? false) ? contents.GroupBy(content => content.ContentLink).Select(grouping => grouping.First()) : contents; }
protected internal virtual IEnumerable <ContentReference> DuplicateHandledRoots(IEnumerable <ContentReference> roots, ICollectionSettings settings) { return(roots == null?Enumerable.Empty <ContentReference>() : !(settings?.IgnoreDuplicates ?? false) ? roots.Distinct(ContentReferenceComparer.Default) : roots); }