|
@@ -141,16 +141,44 @@ namespace Emby.Server.Implementations.Services
|
|
response.ContentType += "; charset=utf-8";
|
|
response.ContentType += "; charset=utf-8";
|
|
}
|
|
}
|
|
|
|
|
|
- var writeToOutputStreamResult = await WriteToOutputStream(response, result).ConfigureAwait(false);
|
|
|
|
- if (writeToOutputStreamResult)
|
|
|
|
|
|
+ var asyncStreamWriter = result as IAsyncStreamWriter;
|
|
|
|
+ if (asyncStreamWriter != null)
|
|
|
|
+ {
|
|
|
|
+ await asyncStreamWriter.WriteToAsync(response.OutputStream, CancellationToken.None).ConfigureAwait(false);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var streamWriter = result as IStreamWriter;
|
|
|
|
+ if (streamWriter != null)
|
|
|
|
+ {
|
|
|
|
+ streamWriter.WriteTo(response.OutputStream);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var stream = result as Stream;
|
|
|
|
+ if (stream != null)
|
|
{
|
|
{
|
|
|
|
+ using (stream)
|
|
|
|
+ {
|
|
|
|
+ await stream.CopyToAsync(response.OutputStream).ConfigureAwait(false);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var bytes = result as byte[];
|
|
|
|
+ if (bytes != null)
|
|
|
|
+ {
|
|
|
|
+ response.ContentType = "application/octet-stream";
|
|
|
|
+ response.SetContentLength(bytes.Length);
|
|
|
|
+
|
|
|
|
+ await response.OutputStream.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
var responseText = result as string;
|
|
var responseText = result as string;
|
|
if (responseText != null)
|
|
if (responseText != null)
|
|
{
|
|
{
|
|
- var bytes = Encoding.UTF8.GetBytes(responseText);
|
|
|
|
|
|
+ bytes = Encoding.UTF8.GetBytes(responseText);
|
|
response.SetContentLength(bytes.Length);
|
|
response.SetContentLength(bytes.Length);
|
|
await response.OutputStream.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);
|
|
await response.OutputStream.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);
|
|
return;
|
|
return;
|
|
@@ -163,7 +191,7 @@ namespace Emby.Server.Implementations.Services
|
|
{
|
|
{
|
|
var contentType = request.ResponseContentType;
|
|
var contentType = request.ResponseContentType;
|
|
var serializer = RequestHelper.GetResponseWriter(HttpListenerHost.Instance, contentType);
|
|
var serializer = RequestHelper.GetResponseWriter(HttpListenerHost.Instance, contentType);
|
|
-
|
|
|
|
|
|
+
|
|
using (var ms = new MemoryStream())
|
|
using (var ms = new MemoryStream())
|
|
{
|
|
{
|
|
serializer(result, ms);
|
|
serializer(result, ms);
|