예제 #1
0
        public async Task <ListInvoiceResultResponse> GetLatestInvoice(CancellationToken cts = default(CancellationToken))
        {
            var listInvoiceResponseList = await SendCommandAsync <NoRequestModel, ListInvoiceResponse>("listinvoices", NoRequestModel.Instance, cts);

            string dateFormat                = "yyyy-MM-ddTHH:mm:ssZ";
            var    lastCreationTime          = DateTime.MinValue;
            ListInvoiceResultResponse result = null;

            foreach (ListInvoiceResultResponse listInvoiceResultResponse in listInvoiceResponseList.Result)
            {
                var creationTime = DateTime.ParseExact(listInvoiceResultResponse.CreationTime, dateFormat, null);
                if (lastCreationTime < creationTime)
                {
                    lastCreationTime = creationTime;
                    result           = listInvoiceResultResponse;
                }
            }
            return(result);
        }
        internal LightningInvoice GetLightningInvoiceObject(ListInvoiceResultResponse invoice, Network network)
        {
            var parsed = BOLT11PaymentRequest.Parse(invoice.Bolt11, network);

            var lightningInvoice = new LightningInvoice()
            {
                Id             = invoice.Hash,
                Amount         = invoice.AmountMsat,
                AmountReceived = invoice.AmountMsat,
                BOLT11         = invoice.Bolt11,
                Status         = ToStatus(invoice.State),
                PaidAt         = null,
                ExpiresAt      = parsed.ExpiryDate
            };

            if (invoice.State == "used")
            {
                lightningInvoice.PaidAt = parsed.ExpiryDate;
            }

            return(lightningInvoice);
        }