btcpayserver/BTCPayServer/Payments/Lightning/LightningClientFactory.cs

51 lines
2 KiB
C#
Raw Normal View History

2018-03-20 12:10:35 +09:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Payments.Lightning.Charge;
using BTCPayServer.Payments.Lightning.CLightning;
2018-07-01 16:10:17 +09:00
using NBitcoin;
using BTCPayServer.Payments.Lightning.Lnd;
2018-03-20 12:10:35 +09:00
namespace BTCPayServer.Payments.Lightning
{
public class LightningClientFactory
{
public ILightningInvoiceClient CreateClient(LightningSupportedPaymentMethod supportedPaymentMethod, BTCPayNetwork network)
{
var uri = supportedPaymentMethod.GetLightningUrl();
2018-07-01 16:10:17 +09:00
return CreateClient(uri, network.NBitcoinNetwork);
}
2018-07-01 21:41:06 +09:00
public static ILightningInvoiceClient CreateClient(LightningConnectionString connString, Network network)
2018-07-01 16:10:17 +09:00
{
if (connString.ConnectionType == LightningConnectionType.Charge)
{
2018-07-01 21:41:06 +09:00
return new ChargeClient(connString.ToUri(true), network);
}
else if (connString.ConnectionType == LightningConnectionType.CLightning)
{
2018-07-01 21:41:06 +09:00
return new CLightningRPCClient(connString.ToUri(false), network);
}
else if (connString.ConnectionType == LightningConnectionType.LndREST)
{
2018-07-08 18:55:48 +09:00
return new LndInvoiceClient(new LndSwaggerClient(new LndRestSettings(connString.BaseUri)
{
Macaroon = connString.Macaroon,
TLS = connString.Tls
}));
}
else
throw new NotSupportedException($"Unsupported connection string for lightning server ({connString.ConnectionType})");
2018-03-20 12:10:35 +09:00
}
2018-07-01 16:10:17 +09:00
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);
}
2018-03-20 12:10:35 +09:00
}
}