aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.ApiInteraction/DataSerializer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.ApiInteraction/DataSerializer.cs')
-rw-r--r--MediaBrowser.ApiInteraction/DataSerializer.cs143
1 files changed, 66 insertions, 77 deletions
diff --git a/MediaBrowser.ApiInteraction/DataSerializer.cs b/MediaBrowser.ApiInteraction/DataSerializer.cs
index 3c3f8fae2..cc13d55c8 100644
--- a/MediaBrowser.ApiInteraction/DataSerializer.cs
+++ b/MediaBrowser.ApiInteraction/DataSerializer.cs
@@ -1,77 +1,66 @@
-using ServiceStack.Text;
-using System;
-using System.IO;
-
-namespace MediaBrowser.ApiInteraction
-{
- public static class DataSerializer
- {
- /// <summary>
- /// This is an auto-generated Protobuf Serialization assembly for best performance.
- /// It is created during the Model project's post-build event.
- /// This means that this class can currently only handle types within the Model project.
- /// If we need to, we can always add a param indicating whether or not the model serializer should be used.
- /// </summary>
- private static readonly ProtobufModelSerializer ProtobufModelSerializer = new ProtobufModelSerializer();
-
- /// <summary>
- /// Deserializes an object using generics
- /// </summary>
- public static T DeserializeFromStream<T>(Stream stream, SerializationFormats format)
- where T : class
- {
- if (format == SerializationFormats.Protobuf)
- {
- //return Serializer.Deserialize<T>(stream);
- return ProtobufModelSerializer.Deserialize(stream, null, typeof(T)) as T;
- }
- if (format == SerializationFormats.Jsv)
- {
- return TypeSerializer.DeserializeFromStream<T>(stream);
- }
- if (format == SerializationFormats.Json)
- {
- return JsonSerializer.DeserializeFromStream<T>(stream);
- }
-
- throw new NotImplementedException();
- }
-
- /// <summary>
- /// Deserializes an object
- /// </summary>
- public static object DeserializeFromStream(Stream stream, SerializationFormats format, Type type)
- {
- if (format == SerializationFormats.Protobuf)
- {
- //throw new NotImplementedException();
- return ProtobufModelSerializer.Deserialize(stream, null, type);
- }
- if (format == SerializationFormats.Jsv)
- {
- return TypeSerializer.DeserializeFromStream(type, stream);
- }
- if (format == SerializationFormats.Json)
- {
- return JsonSerializer.DeserializeFromStream(type, stream);
- }
-
- throw new NotImplementedException();
- }
-
- public static void Configure()
- {
- JsConfig.DateHandler = JsonDateHandler.ISO8601;
- JsConfig.ExcludeTypeInfo = true;
- JsConfig.IncludeNullValues = false;
- }
-
- public static bool CanDeSerializeJsv
- {
- get
- {
- return true;
- }
- }
- }
-}
+using ProtoBuf;
+using ProtoBuf.Meta;
+using ServiceStack.Text;
+using System;
+using System.IO;
+
+namespace MediaBrowser.ApiInteraction
+{
+ /// <summary>
+ /// Class DataSerializer
+ /// </summary>
+ public static class DataSerializer
+ {
+ /// <summary>
+ /// Gets or sets the dynamically created serializer.
+ /// </summary>
+ /// <value>The dynamic serializer.</value>
+ public static TypeModel DynamicSerializer { get; set; }
+
+ /// <summary>
+ /// Deserializes an object
+ /// </summary>
+ /// <param name="stream">The stream.</param>
+ /// <param name="format">The format.</param>
+ /// <param name="type">The type.</param>
+ /// <returns>System.Object.</returns>
+ /// <exception cref="System.NotImplementedException"></exception>
+ public static object DeserializeFromStream(Stream stream, SerializationFormats format, Type type)
+ {
+ if (format == SerializationFormats.Protobuf)
+ {
+ if (DynamicSerializer != null)
+ {
+ return DynamicSerializer.Deserialize(stream, null, type);
+ }
+ return Serializer.NonGeneric.Deserialize(type, stream);
+ }
+ if (format == SerializationFormats.Json)
+ {
+ return JsonSerializer.DeserializeFromStream(type, stream);
+ }
+
+ throw new NotImplementedException();
+ }
+
+ /// <summary>
+ /// Serializes to json.
+ /// </summary>
+ /// <param name="obj">The obj.</param>
+ /// <returns>System.String.</returns>
+ public static string SerializeToJsonString(object obj)
+ {
+ return JsonSerializer.SerializeToString(obj, obj.GetType());
+ }
+
+ /// <summary>
+ /// Configures this instance.
+ /// </summary>
+ public static void Configure()
+ {
+ JsConfig.DateHandler = JsonDateHandler.ISO8601;
+ JsConfig.ExcludeTypeInfo = true;
+ JsConfig.IncludeNullValues = false;
+ }
+ }
+}