|
|
|
@ -27,21 +27,21 @@ namespace NzbDrone.Core.Download
|
|
|
|
|
{
|
|
|
|
|
private readonly IEventAggregator _eventAggregator;
|
|
|
|
|
private readonly IHistoryService _historyService;
|
|
|
|
|
private readonly IProvideImportItemService _provideImportItemService;
|
|
|
|
|
private readonly IDownloadedBooksImportService _downloadedTracksImportService;
|
|
|
|
|
private readonly IProvideImportItemService _importItemService;
|
|
|
|
|
private readonly ITrackedDownloadAlreadyImported _trackedDownloadAlreadyImported;
|
|
|
|
|
private readonly Logger _logger;
|
|
|
|
|
|
|
|
|
|
public CompletedDownloadService(IEventAggregator eventAggregator,
|
|
|
|
|
IHistoryService historyService,
|
|
|
|
|
IProvideImportItemService importItemService,
|
|
|
|
|
IProvideImportItemService provideImportItemService,
|
|
|
|
|
IDownloadedBooksImportService downloadedTracksImportService,
|
|
|
|
|
ITrackedDownloadAlreadyImported trackedDownloadAlreadyImported,
|
|
|
|
|
Logger logger)
|
|
|
|
|
{
|
|
|
|
|
_eventAggregator = eventAggregator;
|
|
|
|
|
_historyService = historyService;
|
|
|
|
|
_importItemService = importItemService;
|
|
|
|
|
_provideImportItemService = provideImportItemService;
|
|
|
|
|
_downloadedTracksImportService = downloadedTracksImportService;
|
|
|
|
|
_trackedDownloadAlreadyImported = trackedDownloadAlreadyImported;
|
|
|
|
|
_logger = logger;
|
|
|
|
@ -54,7 +54,7 @@ namespace NzbDrone.Core.Download
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trackedDownload.ImportItem = _importItemService.ProvideImportItem(trackedDownload.DownloadItem, trackedDownload.ImportItem);
|
|
|
|
|
SetImportItem(trackedDownload);
|
|
|
|
|
|
|
|
|
|
// Only process tracked downloads that are still downloading
|
|
|
|
|
if (trackedDownload.State != TrackedDownloadState.Downloading)
|
|
|
|
@ -70,18 +70,8 @@ namespace NzbDrone.Core.Download
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var downloadItemOutputPath = trackedDownload.ImportItem.OutputPath;
|
|
|
|
|
|
|
|
|
|
if (downloadItemOutputPath.IsEmpty)
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.Warn("Download doesn't contain intermediate path, Skipping.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((OsInfo.IsWindows && !downloadItemOutputPath.IsWindowsPath) ||
|
|
|
|
|
(OsInfo.IsNotWindows && !downloadItemOutputPath.IsUnixPath))
|
|
|
|
|
if (!ValidatePath(trackedDownload))
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.Warn("[{0}] is not a valid local path. You may need a Remote Path Mapping.", downloadItemOutputPath);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -90,6 +80,13 @@ namespace NzbDrone.Core.Download
|
|
|
|
|
|
|
|
|
|
public void Import(TrackedDownload trackedDownload)
|
|
|
|
|
{
|
|
|
|
|
SetImportItem(trackedDownload);
|
|
|
|
|
|
|
|
|
|
if (!ValidatePath(trackedDownload))
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trackedDownload.State = TrackedDownloadState.Importing;
|
|
|
|
|
|
|
|
|
|
var outputPath = trackedDownload.ImportItem.OutputPath.FullPath;
|
|
|
|
@ -190,5 +187,30 @@ namespace NzbDrone.Core.Download
|
|
|
|
|
_logger.Debug("Not all books have been imported for {0}", trackedDownload.DownloadItem.Title);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SetImportItem(TrackedDownload trackedDownload)
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.ImportItem = _provideImportItemService.ProvideImportItem(trackedDownload.DownloadItem, trackedDownload.ImportItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool ValidatePath(TrackedDownload trackedDownload)
|
|
|
|
|
{
|
|
|
|
|
var downloadItemOutputPath = trackedDownload.ImportItem.OutputPath;
|
|
|
|
|
|
|
|
|
|
if (downloadItemOutputPath.IsEmpty)
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.Warn("Download doesn't contain intermediate path, Skipping.");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((OsInfo.IsWindows && !downloadItemOutputPath.IsWindowsPath) ||
|
|
|
|
|
(OsInfo.IsNotWindows && !downloadItemOutputPath.IsUnixPath))
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.Warn("[{0}] is not a valid local path. You may need a Remote Path Mapping.", downloadItemOutputPath);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|