@ -1,5 +1,6 @@
using System ;
using System.Collections.Generic ;
using System.Globalization ;
using System.IO ;
using System.Net ;
using System.Text ;
@ -20,6 +21,8 @@ namespace Emby.Server.Implementations.Services
{
response . StatusCode = ( int ) HttpStatusCode . NoContent ;
}
response . OriginalResponse . ContentLength = 0 ;
return Task . CompletedTask ;
}
@ -39,11 +42,6 @@ namespace Emby.Server.Implementations.Services
response . StatusCode = httpResult . Status ;
response . StatusDescription = httpResult . StatusCode . ToString ( ) ;
//if (string.IsNullOrEmpty(httpResult.ContentType))
//{
// httpResult.ContentType = defaultContentType;
//}
//response.ContentType = httpResult.ContentType;
}
var responseOptions = result as IHasHeaders ;
@ -53,6 +51,7 @@ namespace Emby.Server.Implementations.Services
{
if ( string . Equals ( responseHeaders . Key , "Content-Length" , StringComparison . OrdinalIgnoreCase ) )
{
response . OriginalResponse . ContentLength = long . Parse ( responseHeaders . Value , CultureInfo . InvariantCulture ) ;
continue ;
}
@ -72,52 +71,37 @@ namespace Emby.Server.Implementations.Services
response . ContentType + = "; charset=utf-8" ;
}
var asyncStreamWriter = result as IAsyncStreamWriter ;
if ( asyncStreamWriter ! = null )
{
return asyncStreamWriter . WriteToAsync ( response . OutputStream , cancellationToken ) ;
}
var streamWriter = result as IStreamWriter ;
if ( streamWriter ! = null )
switch ( result )
{
streamWriter . WriteTo ( response . OutputStream ) ;
return Task . CompletedTask ;
}
var fileWriter = result as FileWriter ;
if ( fileWriter ! = null )
{
return fileWriter . WriteToAsync ( response , cancellationToken ) ;
}
var stream = result as Stream ;
if ( stream ! = null )
{
return CopyStream ( stream , response . OutputStream ) ;
}
case IAsyncStreamWriter asyncStreamWriter :
return asyncStreamWriter . WriteToAsync ( response . OutputStream , cancellationToken ) ;
case IStreamWriter streamWriter :
streamWriter . WriteTo ( response . OutputStream ) ;
return Task . CompletedTask ;
case FileWriter fileWriter :
return fileWriter . WriteToAsync ( response , cancellationToken ) ;
case Stream stream :
return CopyStream ( stream , response . OutputStream ) ;
case byte [ ] bytes :
response . ContentType = "application/octet-stream" ;
response . OriginalResponse . ContentLength = bytes . Length ;
if ( bytes . Length > 0 )
{
return response . OutputStream . WriteAsync ( bytes , 0 , bytes . Length , cancellationToken ) ;
}
var bytes = result as byte [ ] ;
if ( bytes ! = null )
{
response . ContentType = "application/octet-stream" ;
return Task . CompletedTask ;
case string responseText :
var responseTextAsBytes = Encoding . UTF8 . GetBytes ( responseText ) ;
response . OriginalResponse . ContentLength = responseTextAsBytes . Length ;
if ( bytes . Length > 0 )
{
return response . OutputStream . WriteAsync ( bytes , 0 , bytes . Length , cancellationToken ) ;
}
return Task . CompletedTask ;
}
if ( responseTextAsBytes . Length > 0 )
{
return response . OutputStream . WriteAsync ( responseTextAsBytes , 0 , responseTextAsBytes . Length , cancellationToken ) ;
}
var responseText = result as string ;
if ( responseText ! = null )
{
bytes = Encoding . UTF8 . GetBytes ( responseText ) ;
if ( bytes . Length > 0 )
{
return response . OutputStream . WriteAsync ( bytes , 0 , bytes . Length , cancellationToken ) ;
}
return Task . CompletedTask ;
return Task . CompletedTask ;
}
return WriteObject ( request , result , response ) ;
@ -143,14 +127,13 @@ namespace Emby.Server.Implementations.Services
ms . Position = 0 ;
var contentLength = ms . Length ;
response . OriginalResponse . ContentLength = contentLength ;
if ( contentLength > 0 )
{
await ms . CopyToAsync ( response . OutputStream ) . ConfigureAwait ( false ) ;
}
}
//serializer(result, outputStream);
}
}
}