< Summary - Jellyfin

Information
Class: MediaBrowser.LocalMetadata.Images.InternalMetadataFolderImageProvider
Assembly: MediaBrowser.LocalMetadata
File(s): /srv/git/jellyfin/MediaBrowser.LocalMetadata/Images/InternalMetadataFolderImageProvider.cs
Line coverage
63%
Covered lines: 14
Uncovered lines: 8
Coverable lines: 22
Total lines: 88
Line coverage: 63.6%
Branch coverage
58%
Covered branches: 7
Total branches: 12
Branch coverage: 58.3%
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%
get_Order()100%11100%
get_Name()100%11100%
Supports(...)60%13.711066.66%
GetImages(...)50%2.98237.5%

File(s)

/srv/git/jellyfin/MediaBrowser.LocalMetadata/Images/InternalMetadataFolderImageProvider.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.IO;
 3using System.Linq;
 4using MediaBrowser.Controller.Entities;
 5using MediaBrowser.Controller.Entities.Audio;
 6using MediaBrowser.Controller.Providers;
 7using MediaBrowser.Model.IO;
 8using Microsoft.Extensions.Logging;
 9
 10namespace MediaBrowser.LocalMetadata.Images
 11{
 12    /// <summary>
 13    /// Internal metadata folder image provider.
 14    /// </summary>
 15    public class InternalMetadataFolderImageProvider : ILocalImageProvider, IHasOrder
 16    {
 17        private readonly IFileSystem _fileSystem;
 18        private readonly ILogger<InternalMetadataFolderImageProvider> _logger;
 19
 20        /// <summary>
 21        /// Initializes a new instance of the <see cref="InternalMetadataFolderImageProvider"/> class.
 22        /// </summary>
 23        /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
 24        /// <param name="logger">Instance of the <see cref="ILogger{InternalMetadataFolderImageProvider}"/> interface.</
 25        public InternalMetadataFolderImageProvider(
 26            IFileSystem fileSystem,
 27            ILogger<InternalMetadataFolderImageProvider> logger)
 28        {
 2229            _fileSystem = fileSystem;
 2230            _logger = logger;
 2231        }
 32
 33        /// Make sure this is last so that all other locations are scanned first
 34        /// <inheritdoc />
 4235        public int Order => 1000;
 36
 37        /// <inheritdoc />
 4238        public string Name => "Internal Images";
 39
 40        /// <inheritdoc />
 41        public bool Supports(BaseItem item)
 42        {
 4643            if (item is Photo)
 44            {
 045                return false;
 46            }
 47
 4648            if (!item.IsSaveLocalMetadataEnabled())
 49            {
 4250                return true;
 51            }
 52
 53            // Extracted images will be saved in here
 454            if (item is Audio)
 55            {
 056                return true;
 57            }
 58
 459            if (item.SupportsLocalMetadata && !item.AlwaysScanInternalMetadataPath)
 60            {
 461                return false;
 62            }
 63
 064            return true;
 65        }
 66
 67        /// <inheritdoc />
 68        public IEnumerable<LocalImageInfo> GetImages(BaseItem item, IDirectoryService directoryService)
 69        {
 4270            var path = item.GetInternalMetadataPath();
 71
 4272            if (!Directory.Exists(path))
 73            {
 4274                return Enumerable.Empty<LocalImageInfo>();
 75            }
 76
 77            try
 78            {
 079                return new LocalImageProvider(_fileSystem).GetImages(item, path, directoryService);
 80            }
 081            catch (IOException ex)
 82            {
 083                _logger.LogError(ex, "Error while getting images for {Library}", item.Name);
 084                return Enumerable.Empty<LocalImageInfo>();
 85            }
 086        }
 87    }
 88}