Merge pull request #248 from mitchellcash/sabnzbd_develop

Fixed: Parsing of SABnzbd develop version
pull/2/head
Devin Buhl 8 years ago committed by GitHub
commit ad38437b70

@ -30,13 +30,13 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
} }
// patch can be a number (releases) or 'x' (git) // patch can be a number (releases) or 'x' (git)
private static readonly Regex VersionRegex = new Regex(@"(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+|x)(?<candidate>.*)", RegexOptions.Compiled); private static readonly Regex VersionRegex = new Regex(@"(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+|x)", RegexOptions.Compiled);
protected override string AddFromNzbFile(RemoteEpisode remoteEpisode, string filename, byte[] fileContents) protected override string AddFromNzbFile(RemoteEpisode remoteEpisode, string filename, byte[] fileContents)
{ {
var category = Settings.TvCategory; var category = Settings.TvCategory;
var priority = remoteEpisode.IsRecentEpisode() ? Settings.RecentTvPriority : Settings.OlderTvPriority; var priority = remoteEpisode.IsRecentEpisode() ? Settings.RecentTvPriority : Settings.OlderTvPriority;
var response = _proxy.DownloadNzb(fileContents, filename, category, priority, Settings); var response = _proxy.DownloadNzb(fileContents, filename, category, priority, Settings);
if (response != null && response.Ids.Any()) if (response != null && response.Ids.Any())
@ -284,110 +284,103 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
failures.AddIfNotNull(TestCategory()); failures.AddIfNotNull(TestCategory());
} }
private bool HasVersion(int major, int minor, int patch = 0, string candidate = null) private bool HasVersion(int major, int minor, int patch = 0)
{ {
candidate = candidate ?? string.Empty; var rawVersion = _proxy.GetVersion(Settings);
var version = ParseVersion(rawVersion);
var version = _proxy.GetVersion(Settings);
var parsed = VersionRegex.Match(version);
int actualMajor; if (version == null)
int actualMinor;
int actualPatch;
string actualCandidate;
if (!parsed.Success)
{ {
if (!version.Equals("develop", StringComparison.InvariantCultureIgnoreCase)) return false;
{
return false;
}
actualMajor = 1;
actualMinor = 1;
actualPatch = 0;
actualCandidate = null;
}
else
{
actualMajor = Convert.ToInt32(parsed.Groups["major"].Value);
actualMinor = Convert.ToInt32(parsed.Groups["minor"].Value);
actualPatch = Convert.ToInt32(parsed.Groups["patch"].Value.Replace("x", ""));
actualCandidate = parsed.Groups["candidate"].Value.ToUpper();
} }
if (actualMajor > major) if (version.Major > major)
{ {
return true; return true;
} }
else if (actualMajor < major) else if (version.Major < major)
{ {
return false; return false;
} }
if (actualMinor > minor) if (version.Minor > minor)
{ {
return true; return true;
} }
else if (actualMinor < minor) else if (version.Minor < minor)
{ {
return false; return false;
} }
if (actualPatch > patch) if (version.Build > patch)
{ {
return true; return true;
} }
else if (actualPatch < patch) else if (version.Build < patch)
{ {
return false; return false;
} }
if (actualCandidate.IsNullOrWhiteSpace()) return true;
{ }
return true;
} private Version ParseVersion(string version)
else if (candidate.IsNullOrWhiteSpace()) {
var parsed = VersionRegex.Match(version);
int major;
int minor;
int patch;
if (parsed.Success)
{ {
return false; major = Convert.ToInt32(parsed.Groups["major"].Value);
minor = Convert.ToInt32(parsed.Groups["minor"].Value);
patch = Convert.ToInt32(parsed.Groups["patch"].Value.Replace("x", "0"));
} }
else else
{ {
return actualCandidate.CompareTo(candidate) > 0; if (!version.Equals("develop", StringComparison.InvariantCultureIgnoreCase))
{
return null;
}
major = 1;
minor = 1;
patch = 0;
} }
return new Version(major, minor, patch);
} }
private ValidationFailure TestConnectionAndVersion() private ValidationFailure TestConnectionAndVersion()
{ {
try try
{ {
var version = _proxy.GetVersion(Settings); var rawVersion = _proxy.GetVersion(Settings);
var parsed = VersionRegex.Match(version); var version = ParseVersion(rawVersion);
if (!parsed.Success) if (version == null)
{ {
if (version.Equals("develop", StringComparison.InvariantCultureIgnoreCase))
{
return new NzbDroneValidationFailure("Version", "Sabnzbd develop version, assuming version 1.1.0 or higher.")
{
IsWarning = true,
DetailedDescription = "Radarr may not be able to support new features added to SABnzbd when running develop versions."
};
}
return new ValidationFailure("Version", "Unknown Version: " + version); return new ValidationFailure("Version", "Unknown Version: " + version);
} }
var major = Convert.ToInt32(parsed.Groups["major"].Value); if (rawVersion.Equals("develop", StringComparison.InvariantCultureIgnoreCase))
var minor = Convert.ToInt32(parsed.Groups["minor"].Value); {
return new NzbDroneValidationFailure("Version", "Sabnzbd develop version, assuming version 1.1.0 or higher.")
{
IsWarning = true,
DetailedDescription = "Radarr may not be able to support new features added to SABnzbd when running develop versions."
};
}
if (major >= 1) if (version.Major >= 1)
{ {
return null; return null;
} }
if (minor >= 7) if (version.Minor >= 7)
{ {
return null; return null;
} }

Loading…
Cancel
Save