|
|
|
|
using Nancy;
|
|
|
|
|
using Nancy.Routing;
|
|
|
|
|
using NzbDrone.Common;
|
|
|
|
|
using NzbDrone.Api.Extensions;
|
|
|
|
|
using NzbDrone.Common.EnvironmentInfo;
|
|
|
|
|
using NzbDrone.Core.Configuration;
|
|
|
|
|
|
|
|
|
|
namespace NzbDrone.Api.System
|
|
|
|
|
{
|
|
|
|
|
public class SystemModule : NzbDroneApiModule
|
|
|
|
|
{
|
|
|
|
|
private readonly IAppFolderInfo _appFolderInfo;
|
|
|
|
|
private readonly IRuntimeInfo _runtimeInfo;
|
|
|
|
|
private readonly IRouteCacheProvider _routeCacheProvider;
|
|
|
|
|
private readonly IConfigFileProvider _configFileProvider;
|
|
|
|
|
|
|
|
|
|
public SystemModule(IAppFolderInfo appFolderInfo, IRuntimeInfo runtimeInfo, IRouteCacheProvider routeCacheProvider, IConfigFileProvider configFileProvider)
|
|
|
|
|
: base("system")
|
|
|
|
|
{
|
|
|
|
|
_appFolderInfo = appFolderInfo;
|
|
|
|
|
_runtimeInfo = runtimeInfo;
|
|
|
|
|
_routeCacheProvider = routeCacheProvider;
|
|
|
|
|
_configFileProvider = configFileProvider;
|
|
|
|
|
Get["/status"] = x => GetStatus();
|
|
|
|
|
Get["/routes"] = x => GetRoutes();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Response GetStatus()
|
|
|
|
|
{
|
|
|
|
|
return new
|
|
|
|
|
{
|
|
|
|
|
Version = BuildInfo.Version.ToString(),
|
|
|
|
|
BuildTime = BuildInfo.BuildDateTime,
|
|
|
|
|
IsDebug = BuildInfo.IsDebug,
|
|
|
|
|
IsProduction = RuntimeInfo.IsProduction,
|
|
|
|
|
IsAdmin = _runtimeInfo.IsAdmin,
|
|
|
|
|
IsUserInteractive = _runtimeInfo.IsUserInteractive,
|
|
|
|
|
StartupPath = _appFolderInfo.StartUpFolder,
|
|
|
|
|
AppData = _appFolderInfo.GetAppDataPath(),
|
|
|
|
|
OsVersion = OsInfo.Version.ToString(),
|
|
|
|
|
IsMono = OsInfo.IsMono,
|
|
|
|
|
IsLinux = OsInfo.IsLinux,
|
|
|
|
|
IsWindows = OsInfo.IsWindows,
|
|
|
|
|
Branch = _configFileProvider.Branch,
|
|
|
|
|
Authentication = _configFileProvider.AuthenticationEnabled,
|
|
|
|
|
StartOfWeek = (int)OsInfo.FirstDayOfWeek
|
|
|
|
|
}.AsResponse();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Response GetRoutes()
|
|
|
|
|
{
|
|
|
|
|
return _routeCacheProvider.GetCache().Values.AsResponse();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|