DataSerializer.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using System.IO;
  3. using ProtoBuf;
  4. using ServiceStack.Text;
  5. namespace MediaBrowser.ApiInteraction
  6. {
  7. public static class DataSerializer
  8. {
  9. public static T DeserializeFromStream<T>(Stream stream, SerializationFormats format)
  10. {
  11. if (format == ApiInteraction.SerializationFormats.Protobuf)
  12. {
  13. return Serializer.Deserialize<T>(stream);
  14. }
  15. else if (format == ApiInteraction.SerializationFormats.Jsv)
  16. {
  17. return TypeSerializer.DeserializeFromStream<T>(stream);
  18. }
  19. else if (format == ApiInteraction.SerializationFormats.Json)
  20. {
  21. return JsonSerializer.DeserializeFromStream<T>(stream);
  22. }
  23. throw new NotImplementedException();
  24. }
  25. public static object DeserializeFromStream(Stream stream, SerializationFormats format, Type type)
  26. {
  27. if (format == ApiInteraction.SerializationFormats.Protobuf)
  28. {
  29. throw new NotImplementedException();
  30. }
  31. else if (format == ApiInteraction.SerializationFormats.Jsv)
  32. {
  33. return TypeSerializer.DeserializeFromStream(type, stream);
  34. }
  35. else if (format == ApiInteraction.SerializationFormats.Json)
  36. {
  37. return JsonSerializer.DeserializeFromStream(type, stream);
  38. }
  39. throw new NotImplementedException();
  40. }
  41. public static void Configure()
  42. {
  43. JsConfig.DateHandler = ServiceStack.Text.JsonDateHandler.ISO8601;
  44. JsConfig.ExcludeTypeInfo = true;
  45. JsConfig.IncludeNullValues = false;
  46. }
  47. public static bool CanDeSerializeJsv
  48. {
  49. get
  50. {
  51. return true;
  52. }
  53. }
  54. }
  55. }