From b5590a38feece01f14681344d55e3522b88bdac5 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Thu, 26 Sep 2024 19:09:12 +0900 Subject: [PATCH] Add better error message if v1 routes are used. --- BTCPayServer.Tests/GreenfieldAPITests.cs | 3 ++ .../GreenfieldObsoleteController.cs | 43 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 BTCPayServer/Controllers/GreenField/GreenfieldObsoleteController.cs diff --git a/BTCPayServer.Tests/GreenfieldAPITests.cs b/BTCPayServer.Tests/GreenfieldAPITests.cs index 1a013eee5..987f8a660 100644 --- a/BTCPayServer.Tests/GreenfieldAPITests.cs +++ b/BTCPayServer.Tests/GreenfieldAPITests.cs @@ -97,6 +97,9 @@ namespace BTCPayServer.Tests Assert.NotNull(e.APIError.Message); GreenfieldPermissionAPIError permissionError = Assert.IsType(e.APIError); Assert.Equal(Policies.CanModifyStoreSettings, permissionError.MissingPermission); + + var client = await user.CreateClient(Policies.CanViewStoreSettings); + await AssertAPIError("unsupported-in-v2", () => client.SendHttpRequest($"api/v1/stores/{user.StoreId}/payment-methods/LightningNetwork")); } [Fact(Timeout = TestTimeout)] diff --git a/BTCPayServer/Controllers/GreenField/GreenfieldObsoleteController.cs b/BTCPayServer/Controllers/GreenField/GreenfieldObsoleteController.cs new file mode 100644 index 000000000..c70e74bce --- /dev/null +++ b/BTCPayServer/Controllers/GreenField/GreenfieldObsoleteController.cs @@ -0,0 +1,43 @@ +using BTCPayServer.Abstractions.Constants; +using BTCPayServer.Abstractions.Extensions; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.Mvc; + +namespace BTCPayServer.Controllers.GreenField +{ + [ApiController] + [EnableCors(CorsPolicies.All)] + [Authorize(AuthenticationSchemes = AuthenticationSchemes.Greenfield)] + public class GreenfieldObsoleteController : ControllerBase + { + [HttpGet("~/api/v1/stores/{storeId}/payment-methods/LNURL")] + public IActionResult Obsolete1(string storeId) + { + return Obsolete(); + } + [HttpGet("~/api/v1/stores/{storeId}/payment-methods/LNURLPay/{cryptoCode}")] + [HttpDelete("~/api/v1/stores/{storeId}/payment-methods/LNURLPay/{cryptoCode}")] + [HttpPut("~/api/v1/stores/{storeId}/payment-methods/LNURLPay/{cryptoCode}")] + public IActionResult Obsolete2(string storeId, string cryptoCode) + { + return Obsolete(); + } + [HttpGet("~/api/v1/stores/{storeId}/payment-methods/LightningNetwork")] + public IActionResult Obsolete3(string storeId) + { + return Obsolete(); + } + [HttpGet("~/api/v1/stores/{storeId}/payment-methods/LightningNetwork/{cryptoCode}")] + [HttpDelete("~/api/v1/stores/{storeId}/payment-methods/LightningNetwork/{cryptoCode}")] + [HttpPut("~/api/v1/stores/{storeId}/payment-methods/LightningNetwork/{cryptoCode}")] + public IActionResult Obsolete4(string storeId, string cryptoCode) + { + return Obsolete(); + } + private IActionResult Obsolete() + { + return this.CreateAPIError(410, "unsupported-in-v2", "This route isn't supported by BTCPay Server 2.0 and newer. Please update your integration."); + } + } +}