示例#1
0
 public CollectionJsonMediaTypeFormatter(ICollectionSettings <T> collectionSettings, MappingEngine mappingEngine)
 {
     _collectionSettings = collectionSettings;
     _mappingEngine      = mappingEngine;
     SupportedMediaTypes.Clear();
     SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/vnd.collection+json"));
 }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
 }