< Summary - Jellyfin

Information
Class: Emby.Server.Implementations.ScheduledTasks.Tasks.DeleteTranscodeFileTask
Assembly: Emby.Server.Implementations
File(s): /srv/git/jellyfin/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteTranscodeFileTask.cs
Line coverage
76%
Covered lines: 32
Uncovered lines: 10
Coverable lines: 42
Total lines: 127
Line coverage: 76.1%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
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%11100%
get_Description()100%210%
get_Category()100%210%
get_Key()100%11100%
get_IsHidden()100%210%
get_IsEnabled()100%11100%
get_IsLogged()100%210%
GetDefaultTriggers()100%11100%
ExecuteAsync(...)100%11100%
DeleteTempFilesFromDirectory(...)50%2.31257.14%

File(s)

/srv/git/jellyfin/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteTranscodeFileTask.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Threading;
 5using System.Threading.Tasks;
 6using MediaBrowser.Common.Configuration;
 7using MediaBrowser.Controller.IO;
 8using MediaBrowser.Model.Globalization;
 9using MediaBrowser.Model.IO;
 10using MediaBrowser.Model.Tasks;
 11using Microsoft.Extensions.Logging;
 12
 13namespace Emby.Server.Implementations.ScheduledTasks.Tasks
 14{
 15    /// <summary>
 16    /// Deletes all transcoding temp files.
 17    /// </summary>
 18    public class DeleteTranscodeFileTask : IScheduledTask, IConfigurableScheduledTask
 19    {
 20        private readonly ILogger<DeleteTranscodeFileTask> _logger;
 21        private readonly IConfigurationManager _configurationManager;
 22        private readonly IFileSystem _fileSystem;
 23        private readonly ILocalizationManager _localization;
 24
 25        /// <summary>
 26        /// Initializes a new instance of the <see cref="DeleteTranscodeFileTask"/> class.
 27        /// </summary>
 28        /// <param name="logger">Instance of the <see cref="ILogger{DeleteTranscodeFileTask}"/> interface.</param>
 29        /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
 30        /// <param name="configurationManager">Instance of the <see cref="IConfigurationManager"/> interface.</param>
 31        /// <param name="localization">Instance of the <see cref="ILocalizationManager"/> interface.</param>
 32        public DeleteTranscodeFileTask(
 33            ILogger<DeleteTranscodeFileTask> logger,
 34            IFileSystem fileSystem,
 35            IConfigurationManager configurationManager,
 36            ILocalizationManager localization)
 37        {
 2238            _logger = logger;
 2239            _fileSystem = fileSystem;
 2240            _configurationManager = configurationManager;
 2241            _localization = localization;
 2242        }
 43
 44        /// <inheritdoc />
 4945        public string Name => _localization.GetLocalizedString("TaskCleanTranscode");
 46
 47        /// <inheritdoc />
 048        public string Description => _localization.GetLocalizedString("TaskCleanTranscodeDescription");
 49
 50        /// <inheritdoc />
 051        public string Category => _localization.GetLocalizedString("TasksMaintenanceCategory");
 52
 53        /// <inheritdoc />
 154        public string Key => "DeleteTranscodeFiles";
 55
 56        /// <inheritdoc />
 057        public bool IsHidden => false;
 58
 59        /// <inheritdoc />
 160        public bool IsEnabled => true;
 61
 62        /// <inheritdoc />
 063        public bool IsLogged => true;
 64
 65        /// <inheritdoc />
 66        public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
 67        {
 2268            return
 2269            [
 2270                new TaskTriggerInfo
 2271                {
 2272                    Type = TaskTriggerInfo.TriggerStartup
 2273                },
 2274                new TaskTriggerInfo
 2275                {
 2276                    Type = TaskTriggerInfo.TriggerInterval,
 2277                    IntervalTicks = TimeSpan.FromHours(24).Ticks
 2278                }
 2279            ];
 80        }
 81
 82        /// <inheritdoc />
 83        public Task ExecuteAsync(IProgress<double> progress, CancellationToken cancellationToken)
 84        {
 185            var minDateModified = DateTime.UtcNow.AddDays(-1);
 186            progress.Report(50);
 87
 188            DeleteTempFilesFromDirectory(_configurationManager.GetTranscodePath(), minDateModified, progress, cancellati
 89
 190            return Task.CompletedTask;
 91        }
 92
 93        /// <summary>
 94        /// Deletes the transcoded temp files from directory with a last write time less than a given date.
 95        /// </summary>
 96        /// <param name="directory">The directory.</param>
 97        /// <param name="minDateModified">The min date modified.</param>
 98        /// <param name="progress">The progress.</param>
 99        /// <param name="cancellationToken">The task cancellation token.</param>
 100        private void DeleteTempFilesFromDirectory(string directory, DateTime minDateModified, IProgress<double> progress
 101        {
 1102            var filesToDelete = _fileSystem.GetFiles(directory, true)
 1103                .Where(f => _fileSystem.GetLastWriteTimeUtc(f) < minDateModified)
 1104                .ToList();
 105
 1106            var index = 0;
 107
 2108            foreach (var file in filesToDelete)
 109            {
 0110                double percent = index;
 0111                percent /= filesToDelete.Count;
 112
 0113                progress.Report(100 * percent);
 114
 0115                cancellationToken.ThrowIfCancellationRequested();
 116
 0117                FileSystemHelper.DeleteFile(_fileSystem, file.FullName, _logger);
 118
 0119                index++;
 120            }
 121
 1122            FileSystemHelper.DeleteEmptyFolders(_fileSystem, directory, _logger);
 123
 1124            progress.Report(100);
 1125        }
 126    }
 127}