diff --git a/src/Docker.DotNet/JsonBase64Converter.cs b/src/Docker.DotNet/JsonBase64Converter.cs new file mode 100644 index 000000000..63c69494f --- /dev/null +++ b/src/Docker.DotNet/JsonBase64Converter.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Docker.DotNet +{ + internal class JsonBase64Converter : JsonConverter + { + public override bool CanRead => true; + + public override bool CanWrite => false; + + public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) + { + throw new NotImplementedException(); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) + { + var strVal = reader.Value as string; + + return Convert.FromBase64String(strVal); + } + + public override bool CanConvert(Type objectType) + { + return objectType == typeof (IList); + } + } +} diff --git a/src/Docker.DotNet/JsonSerializer.cs b/src/Docker.DotNet/JsonSerializer.cs index 11f150934..173550e55 100644 --- a/src/Docker.DotNet/JsonSerializer.cs +++ b/src/Docker.DotNet/JsonSerializer.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace Docker.DotNet @@ -17,7 +17,8 @@ internal class JsonSerializer new JsonVersionConverter(), new StringEnumConverter(), new TimeSpanSecondsConverter(), - new TimeSpanNanosecondsConverter() + new TimeSpanNanosecondsConverter(), + new JsonBase64Converter() } }; @@ -35,4 +36,4 @@ public string SerializeObject(T value) return JsonConvert.SerializeObject(value, this._settings); } } -} \ No newline at end of file +}