using System; using NLog; using NzbDrone.Core.Datastore.Events; using NzbDrone.Core.Download; using NzbDrone.Core.Download.Clients; using NzbDrone.Core.Localization; using NzbDrone.Core.RemotePathMappings; using NzbDrone.Core.RootFolders; using NzbDrone.Core.ThingiProvider.Events; namespace NzbDrone.Core.HealthCheck.Checks { [CheckOn(typeof(ProviderUpdatedEvent))] [CheckOn(typeof(ProviderDeletedEvent))] [CheckOn(typeof(ModelEvent))] [CheckOn(typeof(ModelEvent))] public class DownloadClientRemovesCompletedDownloadsCheck : HealthCheckBase, IProvideHealthCheck { private readonly IProvideDownloadClient _downloadClientProvider; private readonly Logger _logger; public DownloadClientRemovesCompletedDownloadsCheck(IProvideDownloadClient downloadClientProvider, Logger logger, ILocalizationService localizationService) : base(localizationService) { _downloadClientProvider = downloadClientProvider; _logger = logger; } public override HealthCheck Check() { var clients = _downloadClientProvider.GetDownloadClients(true); foreach (var client in clients) { try { var clientName = client.Definition.Name; var status = client.GetStatus(); if (status.RemovesCompletedDownloads) { return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format(_localizationService.GetLocalizedString("DownloadClientRemovesCompletedDownloadsHealthCheckMessage"), clientName, "Lidarr"), "#download-client-removes-completed-downloads"); } } catch (DownloadClientException ex) { _logger.Debug(ex, "Unable to communicate with {0}", client.Definition.Name); } catch (Exception ex) { _logger.Error(ex, "Unknown error occurred in DownloadClientHistoryRetentionCheck HealthCheck"); } } return new HealthCheck(GetType()); } } }