Fixed broken test, drop folder prefix uses regex instead of prefix now.

This commit is contained in:
kay.one 2011-10-22 16:28:57 -07:00
commit 35e44284c0
8 changed files with 35 additions and 97 deletions

View file

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using NLog;
using Ninject;
using NzbDrone.Core.Model;
@ -21,6 +22,8 @@ namespace NzbDrone.Core.Providers
private readonly EpisodeProvider _episodeProvider;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private static readonly Regex StatusRegex = new Regex(@"^_[\w_]*_", RegexOptions.Compiled);
private static readonly List<PostDownloadInfoModel> InfoList = new List<PostDownloadInfoModel>();
[Inject]
@ -69,6 +72,8 @@ namespace NzbDrone.Core.Providers
var folderStatus = GetPostDownloadStatusForFolder(subfolderInfo.Name);
if (folderStatus == PostDownloadStatusType.Unpacking)
{
ProcessFailedOrUnpackingDownload(subfolderInfo, PostDownloadStatusType.Unpacking);
@ -86,8 +91,7 @@ namespace NzbDrone.Core.Providers
if (folderStatus != PostDownloadStatusType.NoError)
{
//Retry processing on the download
ReProcessDownload(new PostDownloadInfoModel{ Name = subfolderInfo.FullName, Status = folderStatus });
ReProcessDownload(new PostDownloadInfoModel { Name = subfolderInfo.FullName, Status = folderStatus });
continue;
}
@ -131,7 +135,7 @@ namespace NzbDrone.Core.Providers
if (importedFiles.Count == 0)
{
Logger.Warn("Unable to Import new download [{0}], unable to parse episode file(s).", subfolderInfo.FullName);
_diskProvider.MoveDirectory(subfolderInfo.FullName,
_diskProvider.MoveDirectory(subfolderInfo.FullName,
GetNewFolderNameWithPostDownloadStatus(subfolderInfo, PostDownloadStatusType.ParseError));
}
@ -165,7 +169,7 @@ namespace NzbDrone.Core.Providers
}
//Remove the error prefix before processing
var parseResult = Parser.ParseTitle(directoryInfo.Name.Substring(GetPrefixLength(postDownloadStatus)));
var parseResult = Parser.ParseTitle(RemoveStatusFromFolderName(directoryInfo.Name));
parseResult.Series = _seriesProvider.FindSeries(parseResult.CleanTitle);
@ -215,25 +219,6 @@ namespace NzbDrone.Core.Providers
ProcessDownload(directoryInfo);
}
public int GetPrefixLength(PostDownloadStatusType postDownloadStatus)
{
//_UNPACK_ & _FAILED_ have a length of 8
if (postDownloadStatus == PostDownloadStatusType.Unpacking || postDownloadStatus == PostDownloadStatusType.Failed)
return 8;
if (postDownloadStatus == PostDownloadStatusType.Unknown)
return 10;
if (postDownloadStatus == PostDownloadStatusType.Processed)
return 0;
if (postDownloadStatus == PostDownloadStatusType.NoError)
return 0;
//Return the 11 (_NzbDrone_) + trailing underscore + postDownloadStatus length
return 11 + postDownloadStatus.ToString().Length;
}
public void Add(PostDownloadInfoModel model)
{
InfoList.Add(model);
@ -278,7 +263,7 @@ namespace NzbDrone.Core.Providers
var error = String.Format("_NzbDrone_{0}_", postDownloadStatus.ToString());
if (existingError != PostDownloadStatusType.NoError)
newFolderName = directoryInfo.Name.Substring(GetPrefixLength(existingError));
newFolderName = RemoveStatusFromFolderName(directoryInfo.Name);
if (postDownloadStatus == PostDownloadStatusType.Unknown)
error = "_NzbDrone_";
@ -294,5 +279,10 @@ namespace NzbDrone.Core.Providers
return Path.Combine(parent, newName);
}
public static string RemoveStatusFromFolderName(string folderName)
{
return StatusRegex.Replace(folderName, string.Empty);
}
}
}