void.cat/VoidCat/Model/Base58GuidConverter.cs

27 lines
820 B
C#
Raw Permalink Normal View History

using System.Text.RegularExpressions;
2022-01-25 23:39:51 +00:00
using Newtonsoft.Json;
namespace VoidCat.Model;
public class Base58GuidConverter : JsonConverter<Guid>
{
public override void WriteJson(JsonWriter writer, Guid value, JsonSerializer serializer)
{
writer.WriteValue(value.ToBase58());
}
public override Guid ReadJson(JsonReader reader, Type objectType, Guid existingValue, bool hasExistingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.String && existingValue == Guid.Empty)
{
var str = reader.Value as string;
if ((str?.Contains('-') ?? false) && Guid.TryParse(str, out var g))
{
return g;
}
return str?.FromBase58Guid() ?? existingValue;
2022-01-25 23:39:51 +00:00
}
return existingValue;
}
}