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.Extensions;
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Plugins;
using MediaBrowser.Model.Services;
using Microsoft.Extensions.Configuration;
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 IResourceFileManager _resourceFileManager;
private readonly IConfiguration _appConfig;
///
/// Initializes a new instance of the class.
///
public DashboardService(
IServerApplicationHost appHost,
IResourceFileManager resourceFileManager,
IServerConfigurationManager serverConfigurationManager,
IFileSystem fileSystem,
ILogger logger,
IHttpResultFactory resultFactory,
IConfiguration appConfig)
{
_appHost = appHost;
_serverConfigurationManager = serverConfigurationManager;
_fileSystem = fileSystem;
_logger = logger;
_resultFactory = resultFactory;
_resourceFileManager = resourceFileManager;
_appConfig = appConfig;
}
///
/// Gets the path of the directory containing the static web interface content, or null if the server is not
/// hosting the static web content.
///
public string DashboardUIPath
{
get
{
if (_appConfig.NoWebContent())
{
return null;
}
if (!string.IsNullOrEmpty(_serverConfigurationManager.Configuration.DashboardSourcePath))
{
return _serverConfigurationManager.Configuration.DashboardSourcePath;
}
return _serverConfigurationManager.ApplicationPaths.WebPath;
}
}
public object Get(GetFavIcon request)
{
return Get(new GetDashboardResource
{
ResourceName = "favicon.ico"
});
}
///
/// Gets the specified request.
///
/// The request.
/// System.Object.
public Task