aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs')
-rw-r--r--MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs84
1 files changed, 42 insertions, 42 deletions
diff --git a/MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs b/MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs
index d60a9ae1f..53b3ee817 100644
--- a/MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs
+++ b/MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs
@@ -1,12 +1,12 @@
-using System;
+using MediaBrowser.Common.Serialization;
+using System;
using System.IO;
using System.Threading.Tasks;
-using MediaBrowser.Common.Serialization;
namespace MediaBrowser.Common.Net.Handlers
{
public abstract class BaseSerializationHandler<T> : BaseHandler
- where T : class
+ where T : class
{
public SerializationFormat SerializationFormat
{
@@ -22,61 +22,61 @@ namespace MediaBrowser.Common.Net.Handlers
return (SerializationFormat)Enum.Parse(typeof(SerializationFormat), format, true);
}
}
-
- public override Task<string> GetContentType()
+
+ protected string ContentType
{
- switch (SerializationFormat)
+ get
{
- case SerializationFormat.Jsv:
- return Task.FromResult("text/plain");
- case SerializationFormat.Protobuf:
- return Task.FromResult("application/x-protobuf");
- default:
- return Task.FromResult(MimeTypes.JsonMimeType);
+ switch (SerializationFormat)
+ {
+ case SerializationFormat.Jsv:
+ return "text/plain";
+ case SerializationFormat.Protobuf:
+ return "application/x-protobuf";
+ default:
+ return MimeTypes.JsonMimeType;
+ }
}
}
- private bool _objectToSerializeEnsured;
- private T _objectToSerialize;
-
- private async Task EnsureObjectToSerialize()
+ protected override async Task<ResponseInfo> GetResponseInfo()
{
- if (!_objectToSerializeEnsured)
+ ResponseInfo info = new ResponseInfo
{
- _objectToSerialize = await GetObjectToSerialize().ConfigureAwait(false);
+ ContentType = ContentType
+ };
- if (_objectToSerialize == null)
- {
- StatusCode = 404;
- }
+ _objectToSerialize = await GetObjectToSerialize().ConfigureAwait(false);
- _objectToSerializeEnsured = true;
+ if (_objectToSerialize == null)
+ {
+ info.StatusCode = 404;
}
+
+ return info;
}
- protected abstract Task<T> GetObjectToSerialize();
+ private T _objectToSerialize;
- protected override Task PrepareResponse()
- {
- return EnsureObjectToSerialize();
- }
+ protected abstract Task<T> GetObjectToSerialize();
- protected async override Task WriteResponseToOutputStream(Stream stream)
+ protected override Task WriteResponseToOutputStream(Stream stream)
{
- await EnsureObjectToSerialize().ConfigureAwait(false);
-
- switch (SerializationFormat)
+ return Task.Run(() =>
{
- case SerializationFormat.Jsv:
- JsvSerializer.SerializeToStream(_objectToSerialize, stream);
- break;
- case SerializationFormat.Protobuf:
- ProtobufSerializer.SerializeToStream(_objectToSerialize, stream);
- break;
- default:
- JsonSerializer.SerializeToStream(_objectToSerialize, stream);
- break;
- }
+ switch (SerializationFormat)
+ {
+ case SerializationFormat.Jsv:
+ JsvSerializer.SerializeToStream(_objectToSerialize, stream);
+ break;
+ case SerializationFormat.Protobuf:
+ ProtobufSerializer.SerializeToStream(_objectToSerialize, stream);
+ break;
+ default:
+ JsonSerializer.SerializeToStream(_objectToSerialize, stream);
+ break;
+ }
+ });
}
}