mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-23 14:40:36 +01:00
51 lines
2.2 KiB
C#
51 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using BTCPayServer.Payments.Lightning.Charge;
|
|
using BTCPayServer.Payments.Lightning.CLightning;
|
|
using NBitcoin;
|
|
using BTCPayServer.Payments.Lightning.Lnd;
|
|
|
|
namespace BTCPayServer.Payments.Lightning
|
|
{
|
|
public class LightningClientFactory
|
|
{
|
|
public ILightningInvoiceClient CreateClient(LightningSupportedPaymentMethod supportedPaymentMethod, BTCPayNetwork network)
|
|
{
|
|
var uri = supportedPaymentMethod.GetLightningUrl();
|
|
return CreateClient(uri, network.NBitcoinNetwork);
|
|
}
|
|
|
|
public static ILightningInvoiceClient CreateClient(LightningConnectionString connString, Network network)
|
|
{
|
|
if (connString.ConnectionType == LightningConnectionType.Charge)
|
|
{
|
|
return new ChargeClient(connString.ToUri(true), network);
|
|
}
|
|
else if (connString.ConnectionType == LightningConnectionType.CLightning)
|
|
{
|
|
return new CLightningRPCClient(connString.ToUri(false), network);
|
|
}
|
|
else if (connString.ConnectionType == LightningConnectionType.LndREST)
|
|
{
|
|
return new LndInvoiceClient(new LndSwaggerClient(new LndRestSettings(connString.BaseUri)
|
|
{
|
|
Macaroon = connString.Macaroon,
|
|
MacaroonFilePath = connString.MacaroonFilePath,
|
|
CertificateThumbprint = connString.CertificateThumbprint,
|
|
AllowInsecure = connString.AllowInsecure,
|
|
}));
|
|
}
|
|
else
|
|
throw new NotSupportedException($"Unsupported connection string for lightning server ({connString.ConnectionType})");
|
|
}
|
|
|
|
public static ILightningInvoiceClient CreateClient(string connectionString, Network network)
|
|
{
|
|
if (!Payments.Lightning.LightningConnectionString.TryParse(connectionString, false, out var conn, out string error))
|
|
throw new FormatException($"Invalid format ({error})");
|
|
return Payments.Lightning.LightningClientFactory.CreateClient(conn, network);
|
|
}
|
|
}
|
|
}
|