< Summary - Jellyfin

Information
Class: MediaBrowser.XbmcMetadata.Providers.BaseNfoProvider<T>
Assembly: MediaBrowser.XbmcMetadata
File(s): /srv/git/jellyfin/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs
Line coverage
7%
Covered lines: 2
Uncovered lines: 24
Coverable lines: 26
Total lines: 82
Line coverage: 7.6%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
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_Name()100%210%
GetMetadata(...)0%620%
HasChanged(...)0%2040%

File(s)

/srv/git/jellyfin/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs

#LineLine coverage
 1#pragma warning disable CS1591
 2
 3using System.IO;
 4using System.Threading;
 5using System.Threading.Tasks;
 6using MediaBrowser.Controller.Entities;
 7using MediaBrowser.Controller.Providers;
 8using MediaBrowser.Model.IO;
 9using MediaBrowser.XbmcMetadata.Savers;
 10
 11namespace MediaBrowser.XbmcMetadata.Providers
 12{
 13    public abstract class BaseNfoProvider<T> : ILocalMetadataProvider<T>, IHasItemChangeMonitor
 14        where T : BaseItem, new()
 15    {
 16        private readonly IFileSystem _fileSystem;
 17
 18        protected BaseNfoProvider(IFileSystem fileSystem)
 19        {
 19820            _fileSystem = fileSystem;
 19821        }
 22
 23        /// <inheritdoc />
 024        public string Name => BaseNfoSaver.SaverName;
 25
 26        /// <inheritdoc />
 27        public Task<MetadataResult<T>> GetMetadata(
 28            ItemInfo info,
 29            IDirectoryService directoryService,
 30            CancellationToken cancellationToken)
 31        {
 032            var result = new MetadataResult<T>();
 33
 034            var file = GetXmlFile(info, directoryService);
 35
 036            if (file is null)
 37            {
 038                return Task.FromResult(result);
 39            }
 40
 041            var path = file.FullName;
 42
 43            try
 44            {
 045                result.Item = new T
 046                {
 047                    IndexNumber = info.IndexNumber
 048                };
 49
 050                Fetch(result, path, cancellationToken);
 051                result.HasMetadata = true;
 052            }
 053            catch (FileNotFoundException)
 54            {
 055                result.HasMetadata = false;
 056            }
 057            catch (IOException)
 58            {
 059                result.HasMetadata = false;
 060            }
 61
 062            return Task.FromResult(result);
 63        }
 64
 65        /// <inheritdoc />
 66        public bool HasChanged(BaseItem item, IDirectoryService directoryService)
 67        {
 068            var file = GetXmlFile(new ItemInfo(item), directoryService);
 69
 070            if (file is null)
 71            {
 072                return false;
 73            }
 74
 075            return file.Exists && _fileSystem.GetLastWriteTimeUtc(file) > item.DateLastSaved;
 76        }
 77
 78        protected abstract void Fetch(MetadataResult<T> result, string path, CancellationToken cancellationToken);
 79
 80        protected abstract FileSystemMetadata? GetXmlFile(ItemInfo info, IDirectoryService directoryService);
 81    }
 82}