using System.Runtime.InteropServices; using BTCPayServer.Services.Invoices; using Newtonsoft.Json.Linq; namespace BTCPayServer.Data { public static class PaymentDataExtensions { public static PaymentEntity GetBlob(this PaymentData paymentData, BTCPayNetworkProvider networks) { var unziped = ZipUtils.Unzip(paymentData.Blob); var cryptoCode = "BTC"; if (JObject.Parse(unziped).TryGetValue("cryptoCode", out var v) && v.Type == JTokenType.String) cryptoCode = v.Value(); var network = networks.GetNetwork(cryptoCode); PaymentEntity paymentEntity = null; if (network == null) { return null; } else { paymentEntity = network.ToObject(unziped); } paymentEntity.Network = network; paymentEntity.Accounted = paymentData.Accounted; return paymentEntity; } } }