#pragma warning disable CS1591
#pragma warning disable SA1402
#pragma warning disable SA1649
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
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;
private readonly IServerApplicationHost _appHost;
private readonly IConfiguration _appConfig;
private readonly IServerConfigurationManager _serverConfigurationManager;
private readonly IFileSystem _fileSystem;
private readonly IResourceFileManager _resourceFileManager;
///
/// Initializes a new instance of the class.
///
/// The logger.
/// The application host.
/// The application configuration.
/// The resource file manager.
/// The server configuration manager.
/// The file system.
/// The result factory.
public DashboardService(
ILogger logger,
IServerApplicationHost appHost,
IConfiguration appConfig,
IResourceFileManager resourceFileManager,
IServerConfigurationManager serverConfigurationManager,
IFileSystem fileSystem,
IHttpResultFactory resultFactory)
{
_logger = logger;
_appHost = appHost;
_appConfig = appConfig;
_resourceFileManager = resourceFileManager;
_serverConfigurationManager = serverConfigurationManager;
_fileSystem = fileSystem;
_resultFactory = resultFactory;
}
///
/// Gets or sets the request context.
///
/// The request context.
public IRequest Request { get; set; }
///
/// Gets the path of the directory containing the static web interface content, or null if the server is not
/// hosting the web client.
///
public string DashboardUIPath => GetDashboardUIPath(_appConfig, _serverConfigurationManager);
///
/// Gets the path of the directory containing the static web interface content.
///
/// The app configuration.
/// The server configuration manager.
/// The directory path, or null if the server is not hosting the web client.
public static string GetDashboardUIPath(IConfiguration appConfig, IServerConfigurationManager serverConfigManager)
{
if (!appConfig.HostWebClient())
{
return null;
}
if (!string.IsNullOrEmpty(serverConfigManager.Configuration.DashboardSourcePath))
{
return serverConfigManager.Configuration.DashboardSourcePath;
}
return serverConfigManager.ApplicationPaths.WebPath;
}
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public object Get(GetFavIcon request)
{
return Get(new GetDashboardResource
{
ResourceName = "favicon.ico"
});
}
///
/// Gets the specified request.
///
/// The request.
/// System.Object.
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "request", Justification = "Required for ServiceStack")]
public Task