From c6d46fcdd0e624a36a92936cf6dc4aa76527cadc Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 17 May 2024 14:46:17 +0900 Subject: [PATCH] Minor refactorings --- .../Extensions/HttpRequestExtensions.cs | 11 +++++++ BTCPayServer.Tests/UnitTest1.cs | 2 +- .../GreenfieldPullPaymentController.cs | 14 +------- BTCPayServer/Controllers/UILNURLController.cs | 2 +- .../PullPaymentHostedService.cs | 33 ++++++++++++++----- 5 files changed, 38 insertions(+), 24 deletions(-) diff --git a/BTCPayServer.Abstractions/Extensions/HttpRequestExtensions.cs b/BTCPayServer.Abstractions/Extensions/HttpRequestExtensions.cs index 2097d7a03..b6a40fe77 100644 --- a/BTCPayServer.Abstractions/Extensions/HttpRequestExtensions.cs +++ b/BTCPayServer.Abstractions/Extensions/HttpRequestExtensions.cs @@ -36,6 +36,17 @@ public static class HttpRequestExtensions request.Path.ToUriComponent()); } + public static string GetCurrentUrlWithQueryString(this HttpRequest request) + { + return string.Concat( + request.Scheme, + "://", + request.Host.ToUriComponent(), + request.PathBase.ToUriComponent(), + request.Path.ToUriComponent(), + request.QueryString.ToUriComponent()); + } + public static string GetCurrentPath(this HttpRequest request) { return string.Concat( diff --git a/BTCPayServer.Tests/UnitTest1.cs b/BTCPayServer.Tests/UnitTest1.cs index 63e650f5a..5d6c94459 100644 --- a/BTCPayServer.Tests/UnitTest1.cs +++ b/BTCPayServer.Tests/UnitTest1.cs @@ -409,7 +409,7 @@ namespace BTCPayServer.Tests }, evt => evt.InvoiceId == invoice.Id); var fetchedInvoice = await tester.PayTester.InvoiceRepository.GetInvoice(evt.InvoiceId); - Assert.Equal(fetchedInvoice.Status, InvoiceStatus.Settled); + Assert.Equal(InvoiceStatus.Settled, fetchedInvoice.Status); Assert.Equal(InvoiceExceptionStatus.None, fetchedInvoice.ExceptionStatus); //BTCPay will attempt to cancel previous bolt11 invoices so that there are less weird edge case scenarios diff --git a/BTCPayServer/Controllers/GreenField/GreenfieldPullPaymentController.cs b/BTCPayServer/Controllers/GreenField/GreenfieldPullPaymentController.cs index ff1081428..a6d2e5298 100644 --- a/BTCPayServer/Controllers/GreenField/GreenfieldPullPaymentController.cs +++ b/BTCPayServer/Controllers/GreenField/GreenfieldPullPaymentController.cs @@ -154,19 +154,7 @@ namespace BTCPayServer.Controllers.Greenfield } if (!ModelState.IsValid) return this.CreateValidationError(ModelState); - var ppId = await _pullPaymentService.CreatePullPayment(new CreatePullPayment() - { - StartsAt = request.StartsAt, - ExpiresAt = request.ExpiresAt, - BOLT11Expiration = request.BOLT11Expiration, - Name = request.Name, - Description = request.Description, - Amount = request.Amount, - Currency = request.Currency, - StoreId = storeId, - PayoutMethodIds = payoutMethods, - AutoApproveClaims = request.AutoApproveClaims - }); + var ppId = await _pullPaymentService.CreatePullPayment(storeId, request); var pp = await _pullPaymentService.GetPullPayment(ppId, false); return this.Ok(CreatePullPaymentData(pp)); } diff --git a/BTCPayServer/Controllers/UILNURLController.cs b/BTCPayServer/Controllers/UILNURLController.cs index c931997aa..7a2f5e110 100644 --- a/BTCPayServer/Controllers/UILNURLController.cs +++ b/BTCPayServer/Controllers/UILNURLController.cs @@ -502,7 +502,7 @@ namespace BTCPayServer }); } - private async Task GetLNURLRequest( + public async Task GetLNURLRequest( string cryptoCode, Data.StoreData store, Data.StoreBlob blob, diff --git a/BTCPayServer/HostedServices/PullPaymentHostedService.cs b/BTCPayServer/HostedServices/PullPaymentHostedService.cs index 951f55e59..efd93f14c 100644 --- a/BTCPayServer/HostedServices/PullPaymentHostedService.cs +++ b/BTCPayServer/HostedServices/PullPaymentHostedService.cs @@ -46,7 +46,7 @@ namespace BTCPayServer.HostedServices public class PullPaymentHostedService : BaseAsyncService { private readonly string[] _lnurlSupportedCurrencies = { "BTC", "SATS" }; - + public class CancelRequest { public CancelRequest(string pullPaymentId) @@ -106,7 +106,22 @@ namespace BTCPayServer.HostedServices } } } - + public Task CreatePullPayment(string storeId, CreatePullPaymentRequest request) + { + return CreatePullPayment(new CreatePullPayment() + { + StartsAt = request.StartsAt, + ExpiresAt = request.ExpiresAt, + BOLT11Expiration = request.BOLT11Expiration, + Name = request.Name, + Description = request.Description, + Amount = request.Amount, + Currency = request.Currency, + StoreId = storeId, + PayoutMethodIds = request.PaymentMethods.Select(p => PayoutMethodId.Parse(p)).ToArray(), + AutoApproveClaims = request.AutoApproveClaims + }); + } public async Task CreatePullPayment(CreatePullPayment create) { ArgumentNullException.ThrowIfNull(create); @@ -373,7 +388,7 @@ namespace BTCPayServer.HostedServices public bool SupportsLNURL(PullPaymentBlob blob) { - var pms = blob.SupportedPaymentMethods.FirstOrDefault(id => + var pms = blob.SupportedPaymentMethods.FirstOrDefault(id => PayoutTypes.LN.GetPayoutMethodId(_networkProvider.DefaultNetwork.CryptoCode) == id); return pms is not null && _lnurlSupportedCurrencies.Contains(blob.Currency); @@ -637,7 +652,7 @@ namespace BTCPayServer.HostedServices { Amount = claimed, Destination = req.ClaimRequest.Destination.ToString(), - Metadata = req.ClaimRequest.Metadata?? new JObject(), + Metadata = req.ClaimRequest.Metadata ?? new JObject(), }; payout.SetBlob(payoutBlob, _jsonSerializerSettings); await ctx.Payouts.AddAsync(payout); @@ -883,25 +898,25 @@ namespace BTCPayServer.HostedServices { null when destination.Amount is null && ppCurrency is null => ("Amount is not specified in destination or payout request", null), null when destination.Amount is null => (null, null), - null when destination.Amount != null => (null,destination.Amount), - not null when destination.Amount is null => (null,amount), + null when destination.Amount != null => (null, destination.Amount), + not null when destination.Amount is null => (null, amount), not null when destination.Amount != null && amount != destination.Amount && destination.IsExplicitAmountMinimum && payoutCurrency == "BTC" && ppCurrency == "SATS" && new Money(amount.Value, MoneyUnit.Satoshi).ToUnit(MoneyUnit.BTC) < destination.Amount => - ($"Amount is implied in both destination ({destination.Amount}) and payout request ({amount}), but the payout request amount is less than the destination amount",null), + ($"Amount is implied in both destination ({destination.Amount}) and payout request ({amount}), but the payout request amount is less than the destination amount", null), not null when destination.Amount != null && amount != destination.Amount && destination.IsExplicitAmountMinimum && !(payoutCurrency == "BTC" && ppCurrency == "SATS") && amount < destination.Amount => - ($"Amount is implied in both destination ({destination.Amount}) and payout request ({amount}), but the payout request amount is less than the destination amount",null), + ($"Amount is implied in both destination ({destination.Amount}) and payout request ({amount}), but the payout request amount is less than the destination amount", null), not null when destination.Amount != null && amount != destination.Amount && !destination.IsExplicitAmountMinimum => ($"Amount is implied in destination ({destination.Amount}) that does not match the payout amount provided {amount})", null), _ => (null, amount) }; } - + public static string GetErrorMessage(ClaimResult result) { switch (result)