You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidarr/NzbDrone.Core/Download/DownloadService.cs

45 lines
1.4 KiB

using NLog;
using NzbDrone.Common.Instrumentation;
using NzbDrone.Common.Messaging;
using NzbDrone.Core.Parser.Model;
12 years ago
namespace NzbDrone.Core.Download
{
public interface IDownloadService
{
void DownloadReport(RemoteEpisode remoteEpisode);
12 years ago
}
public class DownloadService : IDownloadService
{
private readonly IProvideDownloadClient _downloadClientProvider;
private readonly IMessageAggregator _messageAggregator;
12 years ago
private readonly Logger _logger;
public DownloadService(IProvideDownloadClient downloadClientProvider,
IMessageAggregator messageAggregator, Logger logger)
12 years ago
{
_downloadClientProvider = downloadClientProvider;
_messageAggregator = messageAggregator;
12 years ago
_logger = logger;
}
public void DownloadReport(RemoteEpisode remoteEpisode)
12 years ago
{
var downloadTitle = remoteEpisode.Report.Title;
var downloadClient = _downloadClientProvider.GetDownloadClient();
12 years ago
if (!downloadClient.IsConfigured)
{
_logger.Warn("Download client {0} isn't configured yet.", downloadClient.GetType().Name);
return;
}
downloadClient.DownloadNzb(remoteEpisode);
12 years ago
_logger.Progress("Report sent to download client. {0}", downloadTitle);
_messageAggregator.PublishEvent(new EpisodeGrabbedEvent(remoteEpisode));
12 years ago
}
}
}