using System.Linq; using NLog; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Download; using NzbDrone.Core.Instrumentation; using NzbDrone.Core.Messaging; namespace NzbDrone.Core.Indexers { public interface IRssSyncService { void Sync(); } public class RssSyncService : IRssSyncService, IExecute { private readonly IFetchAndParseRss _rssFetcherAndParser; private readonly IMakeDownloadDecision _downloadDecisionMaker; private readonly IDownloadApprovedReports _downloadApprovedReports; private readonly Logger _logger; public RssSyncService(IFetchAndParseRss rssFetcherAndParser, IMakeDownloadDecision downloadDecisionMaker, IDownloadApprovedReports downloadApprovedReports, Logger logger) { _rssFetcherAndParser = rssFetcherAndParser; _downloadDecisionMaker = downloadDecisionMaker; _downloadApprovedReports = downloadApprovedReports; _logger = logger; } public void Sync() { _logger.ProgressInfo("Starting RSS Sync"); var reports = _rssFetcherAndParser.Fetch(); var decisions = _downloadDecisionMaker.GetRssDecision(reports); var downloaded = _downloadApprovedReports.DownloadApproved(decisions); _logger.ProgressInfo("RSS Sync Completed. Reports found: {0}, Reports downloaded: {1}", reports.Count, downloaded.Count()); } public void Execute(RssSyncCommand message) { Sync(); } } }