diff --git a/BTCPayServer/Controllers/GreenField/StoreLightningNetworkPaymentMethodsController.cs b/BTCPayServer/Controllers/GreenField/StoreLightningNetworkPaymentMethodsController.cs index 1377a17b5..1c69dfba3 100644 --- a/BTCPayServer/Controllers/GreenField/StoreLightningNetworkPaymentMethodsController.cs +++ b/BTCPayServer/Controllers/GreenField/StoreLightningNetworkPaymentMethodsController.cs @@ -45,14 +45,12 @@ namespace BTCPayServer.Controllers.GreenField _cssThemeManager = cssThemeManager; } - [Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)] - [HttpGet("~/api/v1/stores/{storeId}/payment-methods/LightningNetwork")] - public ActionResult> GetLightningPaymentMethods( - [FromQuery] bool enabledOnly = false) + public static IEnumerable GetLightningPaymentMethods(StoreData store, BTCPayNetworkProvider networkProvider, bool enabledOnly = false) { - var blob = Store.GetStoreBlob(); + var blob = store.GetStoreBlob(); var excludedPaymentMethods = blob.GetExcludedPaymentMethods(); - return Ok(Store.GetSupportedPaymentMethods(_btcPayNetworkProvider) + + return store.GetSupportedPaymentMethods(networkProvider) .Where((method) => method.PaymentId.PaymentType == PaymentTypes.LightningLike) .OfType() .Select(paymentMethod => @@ -63,8 +61,15 @@ namespace BTCPayServer.Controllers.GreenField ) ) .Where((result) => !enabledOnly || result.Enabled) - .ToList() - ); + .ToList(); + } + + [Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)] + [HttpGet("~/api/v1/stores/{storeId}/payment-methods/LightningNetwork")] + public ActionResult> GetLightningPaymentMethods( + [FromQuery] bool enabledOnly = false) + { + return Ok(GetLightningPaymentMethods(Store, _btcPayNetworkProvider, enabledOnly)); } [Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)] diff --git a/BTCPayServer/Controllers/GreenField/StoreOnChainPaymentMethodsController.cs b/BTCPayServer/Controllers/GreenField/StoreOnChainPaymentMethodsController.cs index f15fa57ea..74af6c9a5 100644 --- a/BTCPayServer/Controllers/GreenField/StoreOnChainPaymentMethodsController.cs +++ b/BTCPayServer/Controllers/GreenField/StoreOnChainPaymentMethodsController.cs @@ -36,22 +36,27 @@ namespace BTCPayServer.Controllers.GreenField _walletProvider = walletProvider; } - [Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)] - [HttpGet("~/api/v1/stores/{storeId}/payment-methods/onchain")] - public ActionResult> GetOnChainPaymentMethods( - [FromQuery] bool enabledOnly = false) + public static IEnumerable GetOnChainPaymentMethods(StoreData store, BTCPayNetworkProvider networkProvider, bool enabledOnly = false) { - var blob = Store.GetStoreBlob(); + var blob = store.GetStoreBlob(); var excludedPaymentMethods = blob.GetExcludedPaymentMethods(); - return Ok(Store.GetSupportedPaymentMethods(_btcPayNetworkProvider) + + return store.GetSupportedPaymentMethods(networkProvider) .Where((method) => method.PaymentId.PaymentType == PaymentTypes.BTCLike) .OfType() .Select(strategy => new OnChainPaymentMethodData(strategy.PaymentId.CryptoCode, strategy.AccountDerivation.ToString(), !excludedPaymentMethods.Match(strategy.PaymentId))) .Where((result) => !enabledOnly || result.Enabled) - .ToList() - ); + .ToList(); + } + + [Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)] + [HttpGet("~/api/v1/stores/{storeId}/payment-methods/onchain")] + public ActionResult> GetOnChainPaymentMethods( + [FromQuery] bool enabledOnly = false) + { + return Ok(GetOnChainPaymentMethods(Store, _btcPayNetworkProvider, enabledOnly)); } [Authorize(Policy = Policies.CanViewStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)] diff --git a/BTCPayServer/Controllers/GreenField/StorePaymentMethodsController.cs b/BTCPayServer/Controllers/GreenField/StorePaymentMethodsController.cs new file mode 100644 index 000000000..5ded6e9bc --- /dev/null +++ b/BTCPayServer/Controllers/GreenField/StorePaymentMethodsController.cs @@ -0,0 +1,39 @@ +#nullable enable +using BTCPayServer.Abstractions.Constants; +using BTCPayServer.Client; +using BTCPayServer.Client.Models; +using BTCPayServer.Data; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using StoreData = BTCPayServer.Data.StoreData; + +namespace BTCPayServer.Controllers.GreenField +{ + [ApiController] + [Authorize(AuthenticationSchemes = AuthenticationSchemes.Greenfield)] + public class StorePaymentMethodsController : ControllerBase + { + private StoreData Store => HttpContext.GetStoreData(); + private readonly BTCPayNetworkProvider _btcPayNetworkProvider; + + public StorePaymentMethodsController(BTCPayNetworkProvider btcPayNetworkProvider) + { + _btcPayNetworkProvider = btcPayNetworkProvider; + } + + [Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Greenfield)] + [HttpGet("~/api/v1/stores/{storeId}/payment-methods")] + public ActionResult GetPaymentMethods( + [FromQuery] bool enabledOnly = false + ) + { + var storeBlob = Store.GetStoreBlob(); + var excludedPaymentMethods = storeBlob.GetExcludedPaymentMethods(); + + return Ok(new { + onchain = StoreOnChainPaymentMethodsController.GetOnChainPaymentMethods(Store, _btcPayNetworkProvider, enabledOnly), + lightning = StoreLightningNetworkPaymentMethodsController.GetLightningPaymentMethods(Store, _btcPayNetworkProvider, enabledOnly) + }); + } + } +}