mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-03-04 09:58:13 +01:00
Merge pull request #4795 from Kukks/lnurl-disable-if-no-node
This commit is contained in:
commit
2f3e947027
2 changed files with 19 additions and 4 deletions
|
@ -1,6 +1,8 @@
|
|||
#nullable enable
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using BTCPayServer.Client.Models;
|
||||
using BTCPayServer.Configuration;
|
||||
|
@ -20,16 +22,19 @@ namespace BTCPayServer.Payments.Lightning
|
|||
private readonly BTCPayNetworkProvider _networkProvider;
|
||||
private readonly DisplayFormatter _displayFormatter;
|
||||
private readonly LightningLikePaymentHandler _lightningLikePaymentHandler;
|
||||
private readonly LightningClientFactoryService _lightningClientFactoryService;
|
||||
|
||||
public LNURLPayPaymentHandler(
|
||||
BTCPayNetworkProvider networkProvider,
|
||||
DisplayFormatter displayFormatter,
|
||||
IOptions<LightningNetworkOptions> options,
|
||||
LightningLikePaymentHandler lightningLikePaymentHandler)
|
||||
LightningLikePaymentHandler lightningLikePaymentHandler,
|
||||
LightningClientFactoryService lightningClientFactoryService)
|
||||
{
|
||||
_networkProvider = networkProvider;
|
||||
_displayFormatter = displayFormatter;
|
||||
_lightningLikePaymentHandler = lightningLikePaymentHandler;
|
||||
_lightningClientFactoryService = lightningClientFactoryService;
|
||||
Options = options;
|
||||
}
|
||||
|
||||
|
@ -62,6 +67,16 @@ namespace BTCPayServer.Payments.Lightning
|
|||
{
|
||||
throw new PaymentMethodUnavailableException("LNURL requires a lightning node to be configured for the store.");
|
||||
}
|
||||
using var cts = new CancellationTokenSource(LightningLikePaymentHandler.LightningTimeout);
|
||||
try
|
||||
{
|
||||
var client = lnSupported.CreateLightningClient(network, Options.Value, _lightningClientFactoryService);
|
||||
await client.GetInfo(cts.Token);
|
||||
}
|
||||
catch (OperationCanceledException) when (cts.IsCancellationRequested)
|
||||
{
|
||||
throw new PaymentMethodUnavailableException("The lightning node did not reply in a timely manner");
|
||||
}
|
||||
|
||||
return new LNURLPayPaymentMethodDetails()
|
||||
{
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace BTCPayServer.Payments.Lightning
|
|||
{
|
||||
public class LightningLikePaymentHandler : PaymentMethodHandlerBase<LightningSupportedPaymentMethod, BTCPayNetwork>
|
||||
{
|
||||
public static int LIGHTNING_TIMEOUT = 5000;
|
||||
public static readonly int LightningTimeout = 5000;
|
||||
readonly NBXplorerDashboard _Dashboard;
|
||||
private readonly LightningClientFactoryService _lightningClientFactory;
|
||||
private readonly BTCPayNetworkProvider _networkProvider;
|
||||
|
@ -93,7 +93,7 @@ namespace BTCPayServer.Payments.Lightning
|
|||
description = description.Replace("{StoreName}", store.StoreName ?? "", StringComparison.OrdinalIgnoreCase)
|
||||
.Replace("{ItemDescription}", invoice.Metadata.ItemDesc ?? "", StringComparison.OrdinalIgnoreCase)
|
||||
.Replace("{OrderId}", invoice.Metadata.OrderId ?? "", StringComparison.OrdinalIgnoreCase);
|
||||
using (var cts = new CancellationTokenSource(LIGHTNING_TIMEOUT))
|
||||
using (var cts = new CancellationTokenSource(LightningTimeout))
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -129,7 +129,7 @@ namespace BTCPayServer.Payments.Lightning
|
|||
|
||||
try
|
||||
{
|
||||
using var cts = new CancellationTokenSource(LIGHTNING_TIMEOUT);
|
||||
using var cts = new CancellationTokenSource(LightningTimeout);
|
||||
var client = CreateLightningClient(supportedPaymentMethod, network);
|
||||
LightningNodeInformation info;
|
||||
try
|
||||
|
|
Loading…
Add table
Reference in a new issue