2014-02-26 05:40:47 +00:00
using System ;
using System.IO ;
using NzbDrone.Common.Disk ;
using NzbDrone.Common.EnvironmentInfo ;
2014-06-07 19:19:37 +00:00
using NzbDrone.Core.Configuration ;
2014-02-26 05:40:47 +00:00
using NzbDrone.Core.Update ;
namespace NzbDrone.Core.HealthCheck.Checks
{
2014-04-10 00:15:13 +00:00
public class UpdateCheck : HealthCheckBase
2014-02-26 05:40:47 +00:00
{
private readonly IDiskProvider _diskProvider ;
private readonly IAppFolderInfo _appFolderInfo ;
private readonly ICheckUpdateService _checkUpdateService ;
2014-06-07 19:19:37 +00:00
private readonly IConfigFileProvider _configFileProvider ;
2014-02-26 05:40:47 +00:00
2014-06-07 19:19:37 +00:00
public UpdateCheck ( IDiskProvider diskProvider ,
IAppFolderInfo appFolderInfo ,
ICheckUpdateService checkUpdateService ,
IConfigFileProvider configFileProvider )
2014-02-26 05:40:47 +00:00
{
_diskProvider = diskProvider ;
_appFolderInfo = appFolderInfo ;
_checkUpdateService = checkUpdateService ;
2014-06-07 19:19:37 +00:00
_configFileProvider = configFileProvider ;
2014-02-26 05:40:47 +00:00
}
2014-12-07 20:54:07 +00:00
2014-04-10 00:15:13 +00:00
public override HealthCheck Check ( )
2014-02-26 05:40:47 +00:00
{
2014-12-07 20:54:07 +00:00
if ( OsInfo . IsWindows | | _configFileProvider . UpdateAutomatically )
2014-02-26 05:40:47 +00:00
{
2015-01-21 19:59:03 +00:00
if ( ! _diskProvider . FolderWritable ( _appFolderInfo . StartUpFolder ) )
2014-02-26 05:40:47 +00:00
{
2015-01-21 22:57:35 +00:00
return new HealthCheck ( GetType ( ) , HealthCheckResult . Error , string . Format ( "Cannot install update because startup folder '{0}' is not writable by the user '{1}'." , _appFolderInfo . StartUpFolder , Environment . UserName ) ) ;
2014-02-26 05:40:47 +00:00
}
}
if ( BuildInfo . BuildDateTime < DateTime . UtcNow . AddDays ( - 14 ) )
{
if ( _checkUpdateService . AvailableUpdate ( ) ! = null )
{
2014-04-10 00:15:13 +00:00
return new HealthCheck ( GetType ( ) , HealthCheckResult . Warning , "New update is available" ) ;
2014-02-26 05:40:47 +00:00
}
}
2014-04-10 00:15:13 +00:00
return new HealthCheck ( GetType ( ) ) ;
}
public override bool CheckOnConfigChange
{
get
{
return false ;
}
2014-02-26 05:40:47 +00:00
}
}
}