mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-01-18 21:32:27 +01:00
55 lines
2.1 KiB
C#
55 lines
2.1 KiB
C#
#nullable enable
|
|
using NBitcoin;
|
|
using NBXplorer;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Serialization;
|
|
|
|
namespace BTCPayServer.Data
|
|
{
|
|
public static class BlobSerializer
|
|
{
|
|
public static (JsonSerializerSettings SerializerSettings, JsonSerializer Serializer) CreateSerializer()
|
|
{
|
|
JsonSerializerSettings settings = CreateSettings();
|
|
return (settings, JsonSerializer.CreateDefault(settings));
|
|
}
|
|
public static (JsonSerializerSettings SerializerSettings, JsonSerializer Serializer) CreateSerializer(Network? network)
|
|
{
|
|
JsonSerializerSettings settings = CreateSettings();
|
|
NBitcoin.JsonConverters.Serializer.RegisterFrontConverters(settings, network);
|
|
settings.ContractResolver = CreateResolver();
|
|
return (settings, JsonSerializer.CreateDefault(settings));
|
|
}
|
|
public static (JsonSerializerSettings SerializerSettings, JsonSerializer Serializer) CreateSerializer(NBXplorerNetwork network)
|
|
{
|
|
JsonSerializerSettings settings = CreateSettings();
|
|
network.Serializer.ConfigureSerializer(settings);
|
|
settings.ContractResolver = CreateResolver();
|
|
return (settings, JsonSerializer.CreateDefault(settings));
|
|
}
|
|
|
|
private static JsonSerializerSettings CreateSettings()
|
|
{
|
|
var settings = new JsonSerializerSettings()
|
|
{
|
|
ContractResolver = CreateResolver(),
|
|
Formatting = Formatting.None,
|
|
NullValueHandling = NullValueHandling.Ignore,
|
|
DefaultValueHandling = DefaultValueHandling.Ignore,
|
|
};
|
|
return settings;
|
|
}
|
|
|
|
private static CamelCasePropertyNamesContractResolver CreateResolver()
|
|
{
|
|
return new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
|
|
{
|
|
NamingStrategy = new CamelCaseNamingStrategy
|
|
{
|
|
ProcessDictionaryKeys = false
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|