using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NBitcoin; using NBXplorer; using Newtonsoft.Json.Linq; using static BTCPayServer.Data.PaymentRequestData; namespace BTCPayServer.Data { public static class PaymentRequestDataExtensions { public static PaymentRequestBlob GetBlob(this PaymentRequestData paymentRequestData) { var result = paymentRequestData.Blob == null ? new PaymentRequestBlob() : JObject.Parse(ZipUtils.Unzip(paymentRequestData.Blob)).ToObject(); return result; } public static bool SetBlob(this PaymentRequestData paymentRequestData, PaymentRequestBlob blob) { var original = new Serializer(Network.Main).ToString(paymentRequestData.GetBlob()); var newBlob = new Serializer(Network.Main).ToString(blob); if (original == newBlob) return false; paymentRequestData.Blob = ZipUtils.Zip(newBlob); return true; } } }