using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using NLog; using NzbDrone.Core.Model.Notification; using NzbDrone.Core.Providers.Core; namespace NzbDrone.Core.Providers { public class SyncProvider { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); private readonly DiskProvider _diskProvider; private readonly SeriesProvider _seriesProvider; public SyncProvider(SeriesProvider seriesProvider, DiskProvider diskProvider) { _seriesProvider = seriesProvider; _diskProvider = diskProvider; } public List GetUnmappedFolders(string path) { Logger.Debug("Generating list of unmapped folders"); if (String.IsNullOrEmpty(path)) throw new ArgumentException("Invalid path provided", "path"); var results = new List(); if (!_diskProvider.FolderExists(path)) { Logger.Debug("Path supplied does not exist: {0}", path); return results; } foreach (string seriesFolder in _diskProvider.GetDirectories(path)) { var cleanPath = Parser.NormalizePath(new DirectoryInfo(seriesFolder).FullName); if (!_seriesProvider.SeriesPathExists(cleanPath)) results.Add(cleanPath); } Logger.Debug("{0} unmapped folders detected.", results.Count); return results; } } }