@ -114,6 +114,12 @@ namespace MediaBrowser.Server.Implementations.HttpServer
/// <exception cref="System.ArgumentNullException">result</exception>
public object GetOptimizedResult < T > ( IRequest requestContext , T result , IDictionary < string , string > responseHeaders = null )
where T : class
{
return GetOptimizedResultInternal < T > ( requestContext , result , true , responseHeaders ) ;
}
private object GetOptimizedResultInternal < T > ( IRequest requestContext , T result , bool addCachePrevention , IDictionary < string , string > responseHeaders = null )
where T : class
{
if ( result = = null )
{
@ -122,20 +128,27 @@ namespace MediaBrowser.Server.Implementations.HttpServer
var optimizedResult = requestContext . ToOptimizedResult ( result ) ;
if ( responseHeaders ! = null )
if ( responseHeaders = = null )
{
// Apply headers
var hasOptions = optimizedResult as IHasOptions ;
responseHeaders = new Dictionary < string , string > ( StringComparer . OrdinalIgnoreCase ) ;
}
if ( hasOptions ! = null )
{
AddResponseHeaders ( hasOptions , responseHeaders ) ;
}
if ( addCachePrevention )
{
responseHeaders [ "Expires" ] = "-1" ;
}
// Apply headers
var hasOptions = optimizedResult as IHasOptions ;
if ( hasOptions ! = null )
{
AddResponseHeaders ( hasOptions , responseHeaders ) ;
}
return optimizedResult ;
}
/// <summary>
/// Gets the optimized result using cache.
/// </summary>
@ -166,7 +179,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
if ( responseHeaders = = null )
{
responseHeaders = new Dictionary < string , string > ( ) ;
responseHeaders = new Dictionary < string , string > ( StringComparer . OrdinalIgnoreCase ) ;
}
// See if the result is already cached in the browser
@ -177,7 +190,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
return result ;
}
return GetOptimizedResult ( requestContext , factoryFn ( ) , responseHeaders ) ;
return GetOptimizedResult Internal ( requestContext , factoryFn ( ) , false , responseHeaders ) ;
}
/// <summary>
@ -209,7 +222,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
if ( responseHeaders = = null )
{
responseHeaders = new Dictionary < string , string > ( ) ;
responseHeaders = new Dictionary < string , string > ( StringComparer . OrdinalIgnoreCase ) ;
}
// See if the result is already cached in the browser
@ -363,7 +376,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
public object GetStaticResult ( IRequest requestContext , StaticResultOptions options )
{
var cacheKey = options . CacheKey ;
options . ResponseHeaders = options . ResponseHeaders ? ? new Dictionary < string , string > ( ) ;
options . ResponseHeaders = options . ResponseHeaders ? ? new Dictionary < string , string > ( StringComparer . OrdinalIgnoreCase ) ;
var contentType = options . ContentType ;
if ( cacheKey = = Guid . Empty )