using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Plugins;
using MediaBrowser.Model.Reflection;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Services;
using Microsoft.Extensions.Logging;
namespace MediaBrowser.WebDashboard.Api
{
///
/// Class GetDashboardConfigurationPages
///
[Route("/web/ConfigurationPages", "GET")]
public class GetDashboardConfigurationPages : IReturn>
{
///
/// Gets or sets the type of the page.
///
/// The type of the page.
public ConfigurationPageType? PageType { get; set; }
public bool? EnableInMainMenu { get; set; }
}
///
/// Class GetDashboardConfigurationPage
///
[Route("/web/ConfigurationPage", "GET")]
public class GetDashboardConfigurationPage
{
///
/// Gets or sets the name.
///
/// The name.
public string Name { get; set; }
}
[Route("/web/Package", "GET", IsHidden = true)]
public class GetDashboardPackage
{
public string Mode { get; set; }
}
[Route("/robots.txt", "GET", IsHidden = true)]
public class GetRobotsTxt
{
}
///
/// Class GetDashboardResource
///
[Route("/web/{ResourceName*}", "GET", IsHidden = true)]
public class GetDashboardResource
{
///
/// Gets or sets the name.
///
/// The name.
public string ResourceName { get; set; }
///
/// Gets or sets the V.
///
/// The V.
public string V { get; set; }
}
[Route("/favicon.ico", "GET", IsHidden = true)]
public class GetFavIcon
{
}
///
/// Class DashboardService
///
public class DashboardService : IService, IRequiresRequest
{
///
/// Gets or sets the logger.
///
/// The logger.
private readonly ILogger _logger;
///
/// Gets or sets the HTTP result factory.
///
/// The HTTP result factory.
private readonly IHttpResultFactory _resultFactory;
///
/// Gets or sets the request context.
///
/// The request context.
public IRequest Request { get; set; }
///
/// The _app host
///
private readonly IServerApplicationHost _appHost;
///
/// The _server configuration manager
///
private readonly IServerConfigurationManager _serverConfigurationManager;
private readonly IFileSystem _fileSystem;
private readonly ILocalizationManager _localization;
private readonly IJsonSerializer _jsonSerializer;
private readonly IAssemblyInfo _assemblyInfo;
private IResourceFileManager _resourceFileManager;
///
/// Initializes a new instance of the class.
///
public DashboardService(IServerApplicationHost appHost, IResourceFileManager resourceFileManager, IServerConfigurationManager serverConfigurationManager, IFileSystem fileSystem, ILocalizationManager localization, IJsonSerializer jsonSerializer, IAssemblyInfo assemblyInfo, ILogger logger, IHttpResultFactory resultFactory)
{
_appHost = appHost;
_serverConfigurationManager = serverConfigurationManager;
_fileSystem = fileSystem;
_localization = localization;
_jsonSerializer = jsonSerializer;
_assemblyInfo = assemblyInfo;
_logger = logger;
_resultFactory = resultFactory;
_resourceFileManager = resourceFileManager;
}
///
/// Gets the path for the web interface.
///
/// The path for the web interface.
public string DashboardUIPath
{
get
{
if (!string.IsNullOrEmpty(_serverConfigurationManager.Configuration.DashboardSourcePath))
{
return _serverConfigurationManager.Configuration.DashboardSourcePath;
}
return Path.Combine(_serverConfigurationManager.ApplicationPaths.ApplicationResourcesPath, "jellyfin-web", "src");
}
}
public object Get(GetFavIcon request)
{
return Get(new GetDashboardResource
{
ResourceName = "favicon.ico"
});
}
///
/// Gets the specified request.
///
/// The request.
/// System.Object.
public Task