2022-03-04 20:05:01 +00:00
|
|
|
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)
|
|
|
|
{
|
2022-03-04 20:05:01 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|