diff options
| author | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-08-22 09:19:18 -0400 |
|---|---|---|
| committer | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-08-22 09:19:18 -0400 |
| commit | 020c20bd7d8503d2acdaa1b3c495f1d7f7785636 (patch) | |
| tree | 744ea675b5024e2fe4629ffae0c639f5bdcb2fab /MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs | |
| parent | 9338571e03520967bab5689812f5a2a0fe13bed8 (diff) | |
Added support for jsv format output from the api
Diffstat (limited to 'MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs')
| -rw-r--r-- | MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs b/MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs new file mode 100644 index 000000000..4229dce61 --- /dev/null +++ b/MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs @@ -0,0 +1,83 @@ +using System.IO;
+using System.Threading.Tasks;
+using MediaBrowser.Common.Serialization;
+using System;
+
+namespace MediaBrowser.Common.Net.Handlers
+{
+ public abstract class BaseJsonHandler<T> : BaseHandler
+ {
+ public SerializationFormat SerializationFormat
+ {
+ get
+ {
+ string format = QueryString["dataformat"];
+
+ if (string.IsNullOrEmpty(format))
+ {
+ return Handlers.SerializationFormat.Json;
+ }
+
+ return (SerializationFormat)Enum.Parse(typeof(SerializationFormat), format, true);
+ }
+ }
+
+ public override Task<string> GetContentType()
+ {
+ switch (SerializationFormat)
+ {
+ case Handlers.SerializationFormat.Jsv:
+ return Task.FromResult<string>("text/plain");
+ default:
+ return Task.FromResult<string>(MimeTypes.JsonMimeType);
+ }
+ }
+
+ private bool _ObjectToSerializeEnsured = false;
+ private T _ObjectToSerialize;
+
+ private async Task EnsureObjectToSerialize()
+ {
+ if (!_ObjectToSerializeEnsured)
+ {
+ _ObjectToSerialize = await GetObjectToSerialize().ConfigureAwait(false);
+
+ if (_ObjectToSerialize == null)
+ {
+ StatusCode = 404;
+ }
+
+ _ObjectToSerializeEnsured = true;
+ }
+ }
+
+ protected abstract Task<T> GetObjectToSerialize();
+
+ protected override Task PrepareResponse()
+ {
+ return EnsureObjectToSerialize();
+ }
+
+ protected async override Task WriteResponseToOutputStream(Stream stream)
+ {
+ await EnsureObjectToSerialize();
+
+ switch (SerializationFormat)
+ {
+ case Handlers.SerializationFormat.Jsv:
+ JsvSerializer.SerializeToStream<T>(_ObjectToSerialize, stream);
+ break;
+ default:
+ JsonSerializer.SerializeToStream<T>(_ObjectToSerialize, stream);
+ break;
+ }
+ }
+ }
+
+ public enum SerializationFormat
+ {
+ Json,
+ Jsv
+ }
+
+}
|
