@ -30,7 +30,7 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
}
// 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 [ ] fileContent )
{
@ -269,110 +269,103 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
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 ;
int actualMinor ;
int actualPatch ;
string actualCandidate ;
if ( ! parsed . Success )
if ( version = = null )
{
if ( ! version . Equals ( "develop" , StringComparison . InvariantCultureIgnoreCase ) )
{
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 ( ) ;
return false ;
}
if ( actual Major > major )
if ( version . Major > major )
{
return true ;
}
else if ( actual Major < major )
else if ( version . Major < major )
{
return false ;
}
if ( actual Minor > minor )
if ( version . Minor > minor )
{
return true ;
}
else if ( actual Minor < minor )
else if ( version . Minor < minor )
{
return false ;
}
if ( actualPatch > patch )
if ( version. Build > patch )
{
return true ;
}
else if ( actualPatch < patch )
else if ( version. Build < patch )
{
return false ;
}
if ( actualCandidate . IsNullOrWhiteSpace ( ) )
{
return true ;
}
else if ( candidate . IsNullOrWhiteSpace ( ) )
return true ;
}
private Version ParseVersion ( string version )
{
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
{
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 ( )
{
try
{
var v ersion = _proxy . GetVersion ( Settings ) ;
var parsed = VersionRegex . Match ( v ersion) ;
var rawV ersion = _proxy . GetVersion ( Settings ) ;
var version = ParseVersion ( rawV ersion) ;
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 = "Sonarr may not be able to support new features added to SABnzbd when running develop versions."
} ;
}
return new ValidationFailure ( "Version" , "Unknown Version: " + version ) ;
}
var major = Convert . ToInt32 ( parsed . Groups [ "major" ] . Value ) ;
var minor = Convert . ToInt32 ( parsed . Groups [ "minor" ] . Value ) ;
if ( rawVersion . Equals ( "develop" , StringComparison . InvariantCultureIgnoreCase ) )
{
return new NzbDroneValidationFailure ( "Version" , "Sabnzbd develop version, assuming version 1.1.0 or higher." )
{
IsWarning = true ,
DetailedDescription = "Sonarr may not be able to support new features added to SABnzbd when running develop versions."
} ;
}
if ( major > = 1 )
if ( version. M ajor > = 1 )
{
return null ;
}
if ( m inor > = 7 )
if ( version. M inor > = 7 )
{
return null ;
}