< Summary - Jellyfin

Information
Class: Emby.Server.Implementations.Library.ExternalDataManager
Assembly: Emby.Server.Implementations
File(s): /srv/git/jellyfin/Emby.Server.Implementations/Library/ExternalDataManager.cs
Line coverage
100%
Covered lines: 5
Uncovered lines: 0
Coverable lines: 5
Total lines: 58
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

0255075100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%

File(s)

/srv/git/jellyfin/Emby.Server.Implementations/Library/ExternalDataManager.cs

#LineLine coverage
 1using System.IO;
 2using System.Linq;
 3using System.Threading;
 4using System.Threading.Tasks;
 5using MediaBrowser.Controller.Entities;
 6using MediaBrowser.Controller.IO;
 7using MediaBrowser.Controller.MediaSegments;
 8using MediaBrowser.Controller.Trickplay;
 9
 10namespace Emby.Server.Implementations.Library;
 11
 12/// <summary>
 13/// IExternalDataManager implementation.
 14/// </summary>
 15public class ExternalDataManager : IExternalDataManager
 16{
 17    private readonly IKeyframeManager _keyframeManager;
 18    private readonly IMediaSegmentManager _mediaSegmentManager;
 19    private readonly IPathManager _pathManager;
 20    private readonly ITrickplayManager _trickplayManager;
 21
 22    /// <summary>
 23    /// Initializes a new instance of the <see cref="ExternalDataManager"/> class.
 24    /// </summary>
 25    /// <param name="keyframeManager">The keyframe manager.</param>
 26    /// <param name="mediaSegmentManager">The media segment manager.</param>
 27    /// <param name="pathManager">The path manager.</param>
 28    /// <param name="trickplayManager">The trickplay manager.</param>
 29    public ExternalDataManager(
 30        IKeyframeManager keyframeManager,
 31        IMediaSegmentManager mediaSegmentManager,
 32        IPathManager pathManager,
 33        ITrickplayManager trickplayManager)
 34    {
 2135        _keyframeManager = keyframeManager;
 2136        _mediaSegmentManager = mediaSegmentManager;
 2137        _pathManager = pathManager;
 2138        _trickplayManager = trickplayManager;
 2139    }
 40
 41    /// <inheritdoc/>
 42    public async Task DeleteExternalItemDataAsync(BaseItem item, CancellationToken cancellationToken)
 43    {
 44        var validPaths = _pathManager.GetExtractedDataPaths(item).Where(Directory.Exists).ToList();
 45        var itemId = item.Id;
 46        if (validPaths.Count > 0)
 47        {
 48            foreach (var path in validPaths)
 49            {
 50                Directory.Delete(path, true);
 51            }
 52        }
 53
 54        await _keyframeManager.DeleteKeyframeDataAsync(itemId, cancellationToken).ConfigureAwait(false);
 55        await _mediaSegmentManager.DeleteSegmentsAsync(itemId, cancellationToken).ConfigureAwait(false);
 56        await _trickplayManager.DeleteTrickplayDataAsync(itemId, cancellationToken).ConfigureAwait(false);
 57    }
 58}