mirror of
https://git.v0l.io/Kieran/void.cat.git
synced 2025-03-29 20:31:44 +01:00
27 lines
820 B
C#
27 lines
820 B
C#
using System.Text.RegularExpressions;
|
|
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;
|
|
}
|
|
|
|
return existingValue;
|
|
}
|
|
} |