aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaus Vium <clausvium@gmail.com>2019-03-05 19:32:22 +0100
committerClaus Vium <clausvium@gmail.com>2019-03-05 19:32:22 +0100
commit9a4a01fb0e94d8ffbc00f5932f284f7faeb0ee69 (patch)
tree9c4d9f38c4823676a43dc4cd7663ea1a8a031339
parentdf92df7bd63f9fd19ed195f668b45d52d6bd3abc (diff)
Fix DI in FileWriter.TransmitFile
-rw-r--r--Emby.Server.Implementations/ApplicationHost.cs2
-rw-r--r--Emby.Server.Implementations/HttpServer/FileWriter.cs30
-rw-r--r--Emby.Server.Implementations/HttpServer/HttpResultFactory.cs6
-rw-r--r--Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs2
4 files changed, 18 insertions, 22 deletions
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index deb1d3cee..93147539c 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -741,7 +741,7 @@ namespace Emby.Server.Implementations
ZipClient = new ZipClient();
serviceCollection.AddSingleton(ZipClient);
- HttpResultFactory = new HttpResultFactory(LoggerFactory, FileSystemManager, JsonSerializer);
+ HttpResultFactory = new HttpResultFactory(LoggerFactory, FileSystemManager, JsonSerializer, StreamHelper);
serviceCollection.AddSingleton(HttpResultFactory);
serviceCollection.AddSingleton<IServerApplicationHost>(this);
diff --git a/Emby.Server.Implementations/HttpServer/FileWriter.cs b/Emby.Server.Implementations/HttpServer/FileWriter.cs
index 303db9980..c4a170eaa 100644
--- a/Emby.Server.Implementations/HttpServer/FileWriter.cs
+++ b/Emby.Server.Implementations/HttpServer/FileWriter.cs
@@ -15,6 +15,7 @@ namespace Emby.Server.Implementations.HttpServer
{
public class FileWriter : IHttpResult
{
+ private readonly IStreamHelper _streamHelper;
private ILogger Logger { get; set; }
public IFileSystem FileSystem { get; }
@@ -45,13 +46,15 @@ namespace Emby.Server.Implementations.HttpServer
public string Path { get; set; }
- public FileWriter(string path, string contentType, string rangeHeader, ILogger logger, IFileSystem fileSystem)
+ public FileWriter(string path, string contentType, string rangeHeader, ILogger logger, IFileSystem fileSystem, IStreamHelper streamHelper)
{
if (string.IsNullOrEmpty(contentType))
{
throw new ArgumentNullException(nameof(contentType));
}
+ _streamHelper = streamHelper;
+
Path = path;
Logger = logger;
FileSystem = fileSystem;
@@ -147,8 +150,7 @@ namespace Emby.Server.Implementations.HttpServer
}
}
- private string[] SkipLogExtensions = new string[]
- {
+ private readonly string[] SkipLogExtensions = {
".js",
".html",
".css"
@@ -165,8 +167,10 @@ namespace Emby.Server.Implementations.HttpServer
}
var path = Path;
+ var offset = RangeStart;
+ var count = RangeLength;
- if (string.IsNullOrWhiteSpace(RangeHeader) || (RangeStart <= 0 && RangeEnd >= TotalContentLength - 1))
+ if (string.IsNullOrWhiteSpace(RangeHeader) || RangeStart <= 0 && RangeEnd >= TotalContentLength - 1)
{
var extension = System.IO.Path.GetExtension(path);
@@ -175,20 +179,15 @@ namespace Emby.Server.Implementations.HttpServer
Logger.LogDebug("Transmit file {0}", path);
}
- //var count = FileShare == FileShareMode.ReadWrite ? TotalContentLength : 0;
- // TODO not DI friendly lol
- await response.TransmitFile(path, 0, 0, FileShare, FileSystem, new StreamHelper(), cancellationToken).ConfigureAwait(false);
- return;
+ offset = 0;
+ count = 0;
}
- // TODO not DI friendly lol
- await response.TransmitFile(path, RangeStart, RangeLength, FileShare, FileSystem, new StreamHelper(), cancellationToken).ConfigureAwait(false);
+
+ await response.TransmitFile(path, offset, count, FileShare, FileSystem, _streamHelper, cancellationToken).ConfigureAwait(false);
}
finally
{
- if (OnComplete != null)
- {
- OnComplete();
- }
+ OnComplete?.Invoke();
}
}
@@ -205,8 +204,5 @@ namespace Emby.Server.Implementations.HttpServer
get => (HttpStatusCode)Status;
set => Status = (int)value;
}
-
- public string StatusDescription { get; set; }
-
}
}
diff --git a/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs b/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
index f4fe6b611..463265862 100644
--- a/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
+++ b/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
@@ -34,14 +34,16 @@ namespace Emby.Server.Implementations.HttpServer
private readonly ILogger _logger;
private readonly IFileSystem _fileSystem;
private readonly IJsonSerializer _jsonSerializer;
+ private readonly IStreamHelper _streamHelper;
/// <summary>
/// Initializes a new instance of the <see cref="HttpResultFactory" /> class.
/// </summary>
- public HttpResultFactory(ILoggerFactory loggerfactory, IFileSystem fileSystem, IJsonSerializer jsonSerializer)
+ public HttpResultFactory(ILoggerFactory loggerfactory, IFileSystem fileSystem, IJsonSerializer jsonSerializer, IStreamHelper streamHelper)
{
_fileSystem = fileSystem;
_jsonSerializer = jsonSerializer;
+ _streamHelper = streamHelper;
_logger = loggerfactory.CreateLogger("HttpResultFactory");
}
@@ -541,7 +543,7 @@ namespace Emby.Server.Implementations.HttpServer
if (!isHeadRequest && !string.IsNullOrEmpty(options.Path))
{
- var hasHeaders = new FileWriter(options.Path, contentType, rangeHeader, _logger, _fileSystem)
+ var hasHeaders = new FileWriter(options.Path, contentType, rangeHeader, _logger, _fileSystem, _streamHelper)
{
OnComplete = options.OnComplete,
OnError = options.OnError,
diff --git a/Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs b/Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs
index 596410765..a7e3e6c70 100644
--- a/Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs
+++ b/Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs
@@ -78,8 +78,6 @@ namespace Emby.Server.Implementations.SocketSharp
const int StreamCopyToBufferSize = 81920;
public async Task TransmitFile(string path, long offset, long count, FileShareMode fileShareMode, IFileSystem fileSystem, IStreamHelper streamHelper, CancellationToken cancellationToken)
{
- // TODO
- // return _response.TransmitFile(path, offset, count, fileShareMode, cancellationToken);
var allowAsync = !RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
//if (count <= 0)