From d8c01ded6eb57ba312e1cd62c4fa51dbcce6053a Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Wed, 19 Sep 2012 12:51:37 -0400 Subject: made some improvements to the base http handler --- .../Net/Handlers/BaseSerializationHandler.cs | 84 +++++++++++----------- 1 file changed, 42 insertions(+), 42 deletions(-) (limited to 'MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs') 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 : 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 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 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 GetObjectToSerialize(); + private T _objectToSerialize; - protected override Task PrepareResponse() - { - return EnsureObjectToSerialize(); - } + protected abstract Task 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; + } + }); } } -- cgit v1.2.3