From 69fffb29d8d68c25a4bdb8197a0321b157e21dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Wed, 20 Sep 2023 18:36:53 +0200 Subject: [PATCH] Make publishing of BTCPay wallet balances optional --- app/controllers/api/btcpay_controller.rb | 8 +++++++ app/models/setting.rb | 2 ++ .../admin/settings/services/_btcpay.html.erb | 12 ++++++++++ spec/requests/api/btcpay_spec.rb | 24 +++++++++++++++++++ 4 files changed, 46 insertions(+) diff --git a/app/controllers/api/btcpay_controller.rb b/app/controllers/api/btcpay_controller.rb index 630a028..d973af2 100644 --- a/app/controllers/api/btcpay_controller.rb +++ b/app/controllers/api/btcpay_controller.rb @@ -1,4 +1,5 @@ class Api::BtcpayController < Api::BaseController + before_action :require_feature_enabled def onchain_btc_balance balance = BtcpayManager::FetchOnchainWalletBalance.call @@ -18,4 +19,11 @@ class Api::BtcpayController < Api::BaseController status: 500 end + private + + def require_feature_enabled + unless Setting.btcpay_publish_wallet_balances + http_status :not_found and return + end + end end diff --git a/app/models/setting.rb b/app/models/setting.rb index dccaffd..9cafa2e 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -54,6 +54,8 @@ class Setting < RailsSettings::Base field :btcpay_auth_token, type: :string, default: ENV["BTCPAY_AUTH_TOKEN"].presence + field :btcpay_publish_wallet_balances, type: :boolean, default: true + # # Discourse # diff --git a/app/views/admin/settings/services/_btcpay.html.erb b/app/views/admin/settings/services/_btcpay.html.erb index 01d11f1..9565826 100644 --- a/app/views/admin/settings/services/_btcpay.html.erb +++ b/app/views/admin/settings/services/_btcpay.html.erb @@ -21,5 +21,17 @@ type: :password, title: "Auth Token" ) %> + + +
+

REST API

+ diff --git a/spec/requests/api/btcpay_spec.rb b/spec/requests/api/btcpay_spec.rb index 6774652..9dc5728 100644 --- a/spec/requests/api/btcpay_spec.rb +++ b/spec/requests/api/btcpay_spec.rb @@ -39,6 +39,18 @@ RSpec.describe "/api/btcpay", type: :request do expect(res["error"]).not_to be_nil end end + + context "feature disabled" do + before do + Setting.btcpay_publish_wallet_balances = false + end + + it "returns a 404 status" do + get api_btcpay_onchain_btc_balance_path + + expect(response).to have_http_status(:not_found) + end + end end describe "GET /lightning_btc_balance" do @@ -75,5 +87,17 @@ RSpec.describe "/api/btcpay", type: :request do expect(res["error"]).not_to be_nil end end + + context "feature disabled" do + before do + Setting.btcpay_publish_wallet_balances = false + end + + it "returns a 404 status" do + get api_btcpay_lightning_btc_balance_path + + expect(response).to have_http_status(:not_found) + end + end end end