|
|
|
@ -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 GetOptimizedResultInternal(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)
|
|
|
|
|