aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-09-28 13:06:15 -0400
committerGitHub <noreply@github.com>2017-09-28 13:06:15 -0400
commitd9c4f2942781efc4a9417dd88a39592975a5f85f (patch)
tree14fa1d72fd4e2f8f7e2b16df1f539b22e7aba5c3 /Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
parent80822d98e4ad3df7cb2e54385c76989ea5945ab3 (diff)
parentf2444d97a0d1b2d69e5b73dd82bc4a76e73b00f0 (diff)
Merge pull request #2921 from MediaBrowser/dev
Dev
Diffstat (limited to 'Emby.Server.Implementations/HttpServer/HttpResultFactory.cs')
-rw-r--r--Emby.Server.Implementations/HttpServer/HttpResultFactory.cs43
1 files changed, 19 insertions, 24 deletions
diff --git a/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs b/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
index a70aad14e..86deccee1 100644
--- a/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
+++ b/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
@@ -142,8 +142,6 @@ namespace Emby.Server.Implementations.HttpServer
throw new ArgumentNullException("result");
}
- var optimizedResult = ToOptimizedResult(requestContext, result);
-
if (responseHeaders == null)
{
responseHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
@@ -154,15 +152,7 @@ namespace Emby.Server.Implementations.HttpServer
responseHeaders["Expires"] = "-1";
}
- // Apply headers
- var hasHeaders = optimizedResult as IHasHeaders;
-
- if (hasHeaders != null)
- {
- AddResponseHeaders(hasHeaders, responseHeaders);
- }
-
- return optimizedResult;
+ return ToOptimizedResultInternal(requestContext, result, responseHeaders);
}
public static string GetCompressionType(IRequest request)
@@ -190,6 +180,11 @@ namespace Emby.Server.Implementations.HttpServer
/// <returns></returns>
public object ToOptimizedResult<T>(IRequest request, T dto)
{
+ return ToOptimizedResultInternal(request, dto, null);
+ }
+
+ private object ToOptimizedResultInternal<T>(IRequest request, T dto, IDictionary<string, string> responseHeaders = null)
+ {
var contentType = request.ResponseContentType;
switch (GetRealContentType(contentType))
@@ -197,27 +192,27 @@ namespace Emby.Server.Implementations.HttpServer
case "application/xml":
case "text/xml":
case "text/xml; charset=utf-8": //"text/xml; charset=utf-8" also matches xml
- return SerializeToXmlString(dto);
+ return GetHttpResult(SerializeToXmlString(dto), contentType, false, responseHeaders);
case "application/json":
case "text/json":
- return _jsonSerializer.SerializeToString(dto);
+ return GetHttpResult(_jsonSerializer.SerializeToString(dto), contentType, false, responseHeaders);
default:
- {
- var ms = new MemoryStream();
- var writerFn = RequestHelper.GetResponseWriter(HttpListenerHost.Instance, contentType);
+ {
+ var ms = new MemoryStream();
+ var writerFn = RequestHelper.GetResponseWriter(HttpListenerHost.Instance, contentType);
- writerFn(dto, ms);
-
- ms.Position = 0;
+ writerFn(dto, ms);
- if (string.Equals(request.Verb, "head", StringComparison.OrdinalIgnoreCase))
- {
- return GetHttpResult(new byte[] { }, contentType, true);
- }
+ ms.Position = 0;
- return GetHttpResult(ms, contentType, true);
+ if (string.Equals(request.Verb, "head", StringComparison.OrdinalIgnoreCase))
+ {
+ return GetHttpResult(new byte[] { }, contentType, true, responseHeaders);
}
+
+ return GetHttpResult(ms, contentType, true, responseHeaders);
+ }
}
}