diff --git a/MediaBrowser.ApiInteraction.Metro/MediaBrowser.ApiInteraction.Metro.csproj b/MediaBrowser.ApiInteraction.Metro/MediaBrowser.ApiInteraction.Metro.csproj
index 9d866607aa..45a64f3745 100644
--- a/MediaBrowser.ApiInteraction.Metro/MediaBrowser.ApiInteraction.Metro.csproj
+++ b/MediaBrowser.ApiInteraction.Metro/MediaBrowser.ApiInteraction.Metro.csproj
@@ -45,6 +45,9 @@
DataSerializer.cs
+
+ SerializationFormats.cs
+
diff --git a/MediaBrowser.ApiInteraction/ApiClient.cs b/MediaBrowser.ApiInteraction/ApiClient.cs
index 80ea82ca27..7145c14654 100644
--- a/MediaBrowser.ApiInteraction/ApiClient.cs
+++ b/MediaBrowser.ApiInteraction/ApiClient.cs
@@ -45,11 +45,11 @@ namespace MediaBrowser.ApiInteraction
///
/// Gets the data format to request from the server
///
- private SerializationFormat SerializationFormat
+ private SerializationFormats SerializationFormat
{
get
{
- return ApiInteraction.SerializationFormat.Protobuf;
+ return ApiInteraction.SerializationFormats.Protobuf;
}
}
@@ -585,11 +585,11 @@ namespace MediaBrowser.ApiInteraction
string url = ApiUrl + "/ServerConfiguration";
// At the moment this can't be retrieved in protobuf format
- SerializationFormat format = SerializationFormat.Jsv;
+ SerializationFormats format = DataSerializer.CanDeSerializeJsv ? SerializationFormats.Jsv : SerializationFormats.Json;
using (Stream stream = await GetSerializedStreamAsync(url, format).ConfigureAwait(false))
{
- return DeserializeFromStream(stream, format);
+ return DataSerializer.DeserializeFromStream(stream, format);
}
}
@@ -601,11 +601,11 @@ namespace MediaBrowser.ApiInteraction
string url = ApiUrl + "/PluginConfiguration?assemblyfilename=" + plugin.AssemblyFileName;
// At the moment this can't be retrieved in protobuf format
- SerializationFormat format = SerializationFormat.Jsv;
+ SerializationFormats format = DataSerializer.CanDeSerializeJsv ? SerializationFormats.Jsv : SerializationFormats.Json;
using (Stream stream = await GetSerializedStreamAsync(url, format).ConfigureAwait(false))
{
- return DeserializeFromStream(stream, format, configurationType);
+ return DataSerializer.DeserializeFromStream(stream, format, configurationType);
}
}
@@ -659,7 +659,7 @@ namespace MediaBrowser.ApiInteraction
///
/// This is a helper around getting a stream from the server that contains serialized data
///
- private Task GetSerializedStreamAsync(string url, SerializationFormat serializationFormat)
+ private Task GetSerializedStreamAsync(string url, SerializationFormats serializationFormat)
{
if (url.IndexOf('?') == -1)
{
@@ -675,35 +675,7 @@ namespace MediaBrowser.ApiInteraction
private T DeserializeFromStream(Stream stream)
{
- return DeserializeFromStream(stream, SerializationFormat);
- }
-
- private T DeserializeFromStream(Stream stream, SerializationFormat format)
- {
- if (format == ApiInteraction.SerializationFormat.Protobuf)
- {
- return DataSerializer.DeserializeProtobufFromStream(stream);
- }
- if (format == ApiInteraction.SerializationFormat.Jsv)
- {
- return DataSerializer.DeserializeJsvFromStream(stream);
- }
-
- return DataSerializer.DeserializeJsonFromStream(stream);
- }
-
- private object DeserializeFromStream(Stream stream, SerializationFormat format, Type type)
- {
- if (format == ApiInteraction.SerializationFormat.Protobuf)
- {
- throw new NotImplementedException();
- }
- if (format == ApiInteraction.SerializationFormat.Jsv)
- {
- return DataSerializer.DeserializeJsvFromStream(stream, type);
- }
-
- return DataSerializer.DeserializeJsonFromStream(stream, type);
+ return DataSerializer.DeserializeFromStream(stream, SerializationFormat);
}
///
diff --git a/MediaBrowser.ApiInteraction/DataSerializer.cs b/MediaBrowser.ApiInteraction/DataSerializer.cs
index 15039cd45a..45fd60ecfa 100644
--- a/MediaBrowser.ApiInteraction/DataSerializer.cs
+++ b/MediaBrowser.ApiInteraction/DataSerializer.cs
@@ -7,30 +7,33 @@ namespace MediaBrowser.ApiInteraction
{
public static class DataSerializer
{
- public static T DeserializeJsonFromStream(Stream stream)
+ public static T DeserializeFromStream(Stream stream, SerializationFormats format)
{
- return JsonSerializer.DeserializeFromStream(stream);
- }
+ if (format == ApiInteraction.SerializationFormats.Protobuf)
+ {
+ return Serializer.Deserialize(stream);
+ }
+ if (format == ApiInteraction.SerializationFormats.Jsv)
+ {
+ return TypeSerializer.DeserializeFromStream(stream);
+ }
- public static T DeserializeJsvFromStream(Stream stream)
- {
- return TypeSerializer.DeserializeFromStream(stream);
+ return JsonSerializer.DeserializeFromStream(stream);
}
- public static object DeserializeJsvFromStream(Stream stream, Type type)
+ public static object DeserializeFromStream(Stream stream, SerializationFormats format, Type type)
{
- return TypeSerializer.DeserializeFromStream(type, stream);
- }
+ if (format == ApiInteraction.SerializationFormats.Protobuf)
+ {
+ throw new NotImplementedException();
+ }
+ if (format == ApiInteraction.SerializationFormats.Jsv)
+ {
+ return TypeSerializer.DeserializeFromStream(type, stream);
+ }
- public static object DeserializeJsonFromStream(Stream stream, Type type)
- {
return JsonSerializer.DeserializeFromStream(type, stream);
}
-
- public static T DeserializeProtobufFromStream(Stream stream)
- {
- return Serializer.Deserialize(stream);
- }
public static void Configure()
{
@@ -38,12 +41,13 @@ namespace MediaBrowser.ApiInteraction
JsConfig.ExcludeTypeInfo = true;
JsConfig.IncludeNullValues = false;
}
- }
- public enum SerializationFormat
- {
- Json,
- Jsv,
- Protobuf
+ public static bool CanDeSerializeJsv
+ {
+ get
+ {
+ return true;
+ }
+ }
}
}
diff --git a/MediaBrowser.ApiInteraction/MediaBrowser.ApiInteraction.csproj b/MediaBrowser.ApiInteraction/MediaBrowser.ApiInteraction.csproj
index 62a60f86cc..228ee6754f 100644
--- a/MediaBrowser.ApiInteraction/MediaBrowser.ApiInteraction.csproj
+++ b/MediaBrowser.ApiInteraction/MediaBrowser.ApiInteraction.csproj
@@ -49,6 +49,7 @@
+
diff --git a/MediaBrowser.ApiInteraction/SerializationFormats.cs b/MediaBrowser.ApiInteraction/SerializationFormats.cs
new file mode 100644
index 0000000000..21eb210d05
--- /dev/null
+++ b/MediaBrowser.ApiInteraction/SerializationFormats.cs
@@ -0,0 +1,10 @@
+
+namespace MediaBrowser.ApiInteraction
+{
+ public enum SerializationFormats
+ {
+ Json,
+ Jsv,
+ Protobuf
+ }
+}