mirror of
https://github.com/aljazceru/BTCPayServerPlugins.git
synced 2025-12-17 15:44:26 +01:00
46 lines
1.4 KiB
C#
46 lines
1.4 KiB
C#
#nullable enable
|
|
using System;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using BTCPayServer.Lightning;
|
|
using NBitcoin;
|
|
using NNostr.Client;
|
|
using NNostr.Client.Protocols;
|
|
|
|
namespace BTCPayServer.Plugins.NIP05;
|
|
|
|
public class NostrWalletConnectLightningConnectionStringHandler : ILightningConnectionStringHandler
|
|
{
|
|
private readonly NostrClientPool _nostrClientPool;
|
|
|
|
public NostrWalletConnectLightningConnectionStringHandler(NostrClientPool nostrClientPool)
|
|
{
|
|
_nostrClientPool = nostrClientPool;
|
|
}
|
|
public ILightningClient? Create(string connectionString, Network network, out string? error)
|
|
{
|
|
|
|
|
|
if (!connectionString.StartsWith(NIP47.UriScheme, StringComparison.OrdinalIgnoreCase) && !connectionString.StartsWith("type=nwc;key="))
|
|
{
|
|
error = null;
|
|
return null;
|
|
}
|
|
|
|
connectionString = connectionString.Replace("type=nwc;key=", "");
|
|
if (!connectionString.StartsWith(NIP47.UriScheme, StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
error = $"Invalid nostr wallet connect uri (must start with {NIP47.UriScheme})";
|
|
return null;
|
|
}
|
|
|
|
if (!Uri.TryCreate(connectionString, UriKind.Absolute, out var uri))
|
|
{
|
|
error = "Invalid nostr wallet connect uri";
|
|
return null;
|
|
}
|
|
|
|
error = null;
|
|
return new NostrWalletConnectLightningClient(_nostrClientPool, uri, network);
|
|
}
|
|
} |