Merge pull request #1454 from Bond-009/webresource

Simplify file serving code
This commit is contained in:
dkanada
2019-06-21 23:33:37 -07:00
committed by GitHub
6 changed files with 74 additions and 156 deletions

View File

@@ -232,11 +232,6 @@ namespace Emby.Server.Implementations
/// <value>The server configuration manager.</value>
public IServerConfigurationManager ServerConfigurationManager => (IServerConfigurationManager)ConfigurationManager;
protected virtual IResourceFileManager CreateResourceFileManager()
{
return new ResourceFileManager(HttpResultFactory, LoggerFactory, FileSystemManager);
}
/// <summary>
/// Gets or sets the user manager.
/// </summary>
@@ -887,7 +882,7 @@ namespace Emby.Server.Implementations
SubtitleEncoder = new MediaBrowser.MediaEncoding.Subtitles.SubtitleEncoder(LibraryManager, LoggerFactory, ApplicationPaths, FileSystemManager, MediaEncoder, JsonSerializer, HttpClient, MediaSourceManager, ProcessFactory);
serviceCollection.AddSingleton(SubtitleEncoder);
serviceCollection.AddSingleton(CreateResourceFileManager());
serviceCollection.AddSingleton(typeof(IResourceFileManager), typeof(ResourceFileManager));
displayPreferencesRepo.Initialize();

View File

@@ -1,10 +1,8 @@
using System;
using System.IO;
using System.Threading.Tasks;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Services;
using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations
@@ -13,34 +11,14 @@ namespace Emby.Server.Implementations
{
private readonly IFileSystem _fileSystem;
private readonly ILogger _logger;
private readonly IHttpResultFactory _resultFactory;
public ResourceFileManager(
IHttpResultFactory resultFactory,
ILoggerFactory loggerFactory,
IFileSystem fileSystem)
public ResourceFileManager(ILogger<ResourceFileManager> logger, IFileSystem fileSystem)
{
_resultFactory = resultFactory;
_logger = loggerFactory.CreateLogger("ResourceManager");
_logger = logger;
_fileSystem = fileSystem;
}
public Stream GetResourceFileStream(string basePath, string virtualPath)
{
return _fileSystem.GetFileStream(GetResourcePath(basePath, virtualPath), FileOpenMode.Open, FileAccessMode.Read, FileShareMode.ReadWrite, true);
}
public Task<object> GetStaticFileResult(IRequest request, string basePath, string virtualPath, string contentType, TimeSpan? cacheDuration)
{
return _resultFactory.GetStaticFileResult(request, GetResourcePath(basePath, virtualPath));
}
public string ReadAllText(string basePath, string virtualPath)
{
return File.ReadAllText(GetResourcePath(basePath, virtualPath));
}
private string GetResourcePath(string basePath, string virtualPath)
public string GetResourcePath(string basePath, string virtualPath)
{
var fullPath = Path.Combine(basePath, virtualPath.Replace('/', Path.DirectorySeparatorChar));
@@ -50,7 +28,7 @@ namespace Emby.Server.Implementations
}
catch (Exception ex)
{
_logger.LogError(ex, "Error in Path.GetFullPath");
_logger.LogError(ex, "Error retrieving full path");
}
// Don't allow file system access outside of the source folder