< 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: 83
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;
 4using System.IO;
 5using System.Threading;
 6using System.Threading.Tasks;
 7using MediaBrowser.Controller.Entities;
 8using MediaBrowser.Controller.Providers;
 9using MediaBrowser.Model.IO;
 10using MediaBrowser.XbmcMetadata.Savers;
 11
 12namespace MediaBrowser.XbmcMetadata.Providers
 13{
 14    public abstract class BaseNfoProvider<T> : ILocalMetadataProvider<T>, IHasItemChangeMonitor
 15        where T : BaseItem, new()
 16    {
 17        private readonly IFileSystem _fileSystem;
 18
 19        protected BaseNfoProvider(IFileSystem fileSystem)
 20        {
 18921            _fileSystem = fileSystem;
 18922        }
 23
 24        /// <inheritdoc />
 025        public string Name => BaseNfoSaver.SaverName;
 26
 27        /// <inheritdoc />
 28        public Task<MetadataResult<T>> GetMetadata(
 29            ItemInfo info,
 30            IDirectoryService directoryService,
 31            CancellationToken cancellationToken)
 32        {
 033            var result = new MetadataResult<T>();
 34
 035            var file = GetXmlFile(info, directoryService);
 36
 037            if (file is null)
 38            {
 039                return Task.FromResult(result);
 40            }
 41
 042            var path = file.FullName;
 43
 44            try
 45            {
 046                result.Item = new T
 047                {
 048                    IndexNumber = info.IndexNumber
 049                };
 50
 051                Fetch(result, path, cancellationToken);
 052                result.HasMetadata = true;
 053            }
 054            catch (FileNotFoundException)
 55            {
 056                result.HasMetadata = false;
 057            }
 058            catch (IOException)
 59            {
 060                result.HasMetadata = false;
 061            }
 62
 063            return Task.FromResult(result);
 64        }
 65
 66        /// <inheritdoc />
 67        public bool HasChanged(BaseItem item, IDirectoryService directoryService)
 68        {
 069            var file = GetXmlFile(new ItemInfo(item), directoryService);
 70
 071            if (file is null)
 72            {
 073                return false;
 74            }
 75
 076            return file.Exists && _fileSystem.GetLastWriteTimeUtc(file) > item.DateLastSaved;
 77        }
 78
 79        protected abstract void Fetch(MetadataResult<T> result, string path, CancellationToken cancellationToken);
 80
 81        protected abstract FileSystemMetadata? GetXmlFile(ItemInfo info, IDirectoryService directoryService);
 82    }
 83}