btcpayserver/BTCPayServer/Data/Payouts/BitcoinLike/UriClaimDestination.cs

30 lines
984 B
C#

#nullable enable
using System;
using NBitcoin;
using NBitcoin.Payment;
namespace BTCPayServer.Data
{
public class UriClaimDestination : IBitcoinLikeClaimDestination
{
private readonly BitcoinUrlBuilder _bitcoinUrl;
public UriClaimDestination(BitcoinUrlBuilder bitcoinUrl)
{
ArgumentNullException.ThrowIfNull(bitcoinUrl);
if (bitcoinUrl.Address is null)
throw new ArgumentException(nameof(bitcoinUrl));
_bitcoinUrl = bitcoinUrl;
Address = bitcoinUrl.Address ?? throw new FormatException("the bip21 doesn't contain an address");
}
public BitcoinUrlBuilder BitcoinUrl => _bitcoinUrl;
public BitcoinAddress Address { get; }
public override string ToString()
{
return _bitcoinUrl.ToString();
}
public string Id => Address.ToString();
public decimal? Amount => _bitcoinUrl.Amount?.ToDecimal(MoneyUnit.BTC);
}
}