< Summary - Jellyfin

Information
Class: Emby.Server.Implementations.Images.CollectionFolderImageProvider
Assembly: Emby.Server.Implementations
File(s): /srv/git/jellyfin/Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs
Line coverage
60%
Covered lines: 24
Uncovered lines: 16
Coverable lines: 40
Total lines: 101
Line coverage: 60%
Branch coverage
31%
Covered branches: 5
Total branches: 16
Branch coverage: 31.2%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetItemsWithImages(...)25%25.271254.83%
Supports(...)100%11100%
CreateImage(...)50%4.59466.66%

File(s)

/srv/git/jellyfin/Emby.Server.Implementations/Images/CollectionFolderImageProvider.cs

#LineLine coverage
 1#nullable disable
 2
 3#pragma warning disable CS1591
 4
 5using System;
 6using System.Collections.Generic;
 7using System.IO;
 8using Jellyfin.Data.Enums;
 9using MediaBrowser.Common.Configuration;
 10using MediaBrowser.Controller.Drawing;
 11using MediaBrowser.Controller.Dto;
 12using MediaBrowser.Controller.Entities;
 13using MediaBrowser.Controller.Providers;
 14using MediaBrowser.Model.Entities;
 15using MediaBrowser.Model.IO;
 16using MediaBrowser.Model.Querying;
 17
 18namespace Emby.Server.Implementations.Images
 19{
 20    public class CollectionFolderImageProvider : BaseDynamicImageProvider<CollectionFolder>
 21    {
 2222        public CollectionFolderImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths
 23        {
 2224        }
 25
 26        protected override IReadOnlyList<BaseItem> GetItemsWithImages(BaseItem item)
 27        {
 428            var view = (CollectionFolder)item;
 429            var viewType = view.CollectionType;
 30
 31            BaseItemKind[] includeItemTypes;
 32
 33            switch (viewType)
 34            {
 35                case CollectionType.movies:
 036                    includeItemTypes = new[] { BaseItemKind.Movie };
 037                    break;
 38                case CollectionType.tvshows:
 039                    includeItemTypes = new[] { BaseItemKind.Series };
 040                    break;
 41                case CollectionType.music:
 042                    includeItemTypes = new[] { BaseItemKind.MusicAlbum };
 043                    break;
 44                case CollectionType.musicvideos:
 045                    includeItemTypes = new[] { BaseItemKind.MusicVideo };
 046                    break;
 47                case CollectionType.books:
 048                    includeItemTypes = new[] { BaseItemKind.Book, BaseItemKind.AudioBook };
 049                    break;
 50                case CollectionType.boxsets:
 051                    includeItemTypes = new[] { BaseItemKind.BoxSet };
 052                    break;
 53                case CollectionType.homevideos:
 54                case CollectionType.photos:
 055                    includeItemTypes = new[] { BaseItemKind.Video, BaseItemKind.Photo };
 056                    break;
 57                default:
 458                    includeItemTypes = new[] { BaseItemKind.Video, BaseItemKind.Audio, BaseItemKind.Photo, BaseItemKind.
 59                    break;
 60            }
 61
 462            var recursive = viewType != CollectionType.playlists;
 63
 464            return view.GetItemList(new InternalItemsQuery
 465            {
 466                CollapseBoxSetItems = false,
 467                Recursive = recursive,
 468                DtoOptions = new DtoOptions(false),
 469                ImageTypes = new[] { ImageType.Primary },
 470                Limit = 8,
 471                OrderBy = new[]
 472                {
 473                    (ItemSortBy.Random, SortOrder.Ascending)
 474                },
 475                IncludeItemTypes = includeItemTypes
 476            });
 77        }
 78
 79        protected override bool Supports(BaseItem item)
 80        {
 781            return item is CollectionFolder;
 82        }
 83
 84        protected override string CreateImage(BaseItem item, IReadOnlyCollection<BaseItem> itemsWithImages, string outpu
 85        {
 486            var outputPath = Path.ChangeExtension(outputPathWithoutExtension, ".png");
 87
 488            if (imageType == ImageType.Primary)
 89            {
 490                if (itemsWithImages.Count == 0)
 91                {
 492                    return null;
 93                }
 94
 095                return CreateThumbCollage(item, itemsWithImages, outputPath, 960, 540);
 96            }
 97
 098            return base.CreateImage(item, itemsWithImages, outputPath, imageType, imageIndex);
 99        }
 100    }
 101}