using System; using System.Linq; using NLog; using NzbDrone.Common; using NzbDrone.Core.Configuration; using NzbDrone.Core.Model.Notification; using NzbDrone.Core.Providers; namespace NzbDrone.Core.Jobs.Implementations { public class PostDownloadScanJob : IJob { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); private readonly PostDownloadProvider _postDownloadProvider; private readonly IConfigService _configService; private readonly DiskProvider _diskProvider; public PostDownloadScanJob(PostDownloadProvider postDownloadProvider,IConfigService configService, DiskProvider diskProvider) { _postDownloadProvider = postDownloadProvider; _configService = configService; _diskProvider = diskProvider; } public PostDownloadScanJob() { } public string Name { get { return "Drop folder monitor"; } } public TimeSpan DefaultInterval { get { return TimeSpan.FromMinutes(1); } } public virtual void Start(ProgressNotification notification, dynamic options) { string dropFolder; if (options != null && !String.IsNullOrWhiteSpace(options.Path)) dropFolder = options.Path; else dropFolder = _configService.DownloadClientTvDirectory; if (String.IsNullOrWhiteSpace(dropFolder)) { Logger.Debug("No drop folder is defined. Skipping."); return; } if (!_diskProvider.FolderExists(dropFolder)) { Logger.Warn("Unable to Scan for New Downloads - folder Doesn't exist: [{0}]", dropFolder); return; } _postDownloadProvider.ProcessDropFolder(dropFolder); } } }