Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions client/src/client_sync/v22/hidden.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// SPDX-License-Identifier: CC0-1.0

//! Macros for implementing JSON-RPC methods on a client.
//!
//! Specifically this is `== Hidden ==` methods that are not listed in the
//! API docs of Bitcoin Core `v22`.
//!
//! All macros require `Client` to be in scope.
//!
//! See, or use the `define_jsonrpc_bitreq_client!` macro to define a `Client`.

/// Implements Bitcoin Core JSON-RPC API method `addconnection`.
#[macro_export]
macro_rules! impl_client_v22__add_connection {
() => {
impl Client {
pub fn add_connection(
&self,
address: &str,
connection_type: &str,
) -> Result<AddConnection> {
self.call("addconnection", &[into_json(address)?, into_json(connection_type)?])
}
}
};
}
2 changes: 2 additions & 0 deletions client/src/client_sync/v22/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
//!
//! We ignore option arguments unless they effect the shape of the returned JSON data.

mod hidden;
mod signer;
mod wallet;

Expand Down Expand Up @@ -69,6 +70,7 @@ crate::impl_client_v20__generate_to_descriptor!();
crate::impl_client_v17__invalidate_block!();

// == Hidden ==
crate::impl_client_v22__add_connection!();
crate::impl_client_v21__add_peer_address!();
crate::impl_client_v17__estimate_raw_fee!();
crate::impl_client_v17__wait_for_block!();
Expand Down
1 change: 1 addition & 0 deletions client/src/client_sync/v23/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ crate::impl_client_v20__generate_to_descriptor!();
crate::impl_client_v17__invalidate_block!();

// == Hidden ==
crate::impl_client_v22__add_connection!();
crate::impl_client_v21__add_peer_address!();
crate::impl_client_v17__estimate_raw_fee!();
crate::impl_client_v17__wait_for_block!();
Expand Down
1 change: 1 addition & 0 deletions client/src/client_sync/v24/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ crate::impl_client_v20__generate_to_descriptor!();
crate::impl_client_v17__invalidate_block!();

// == Hidden ==
crate::impl_client_v22__add_connection!();
crate::impl_client_v21__add_peer_address!();
crate::impl_client_v17__estimate_raw_fee!();
crate::impl_client_v17__wait_for_block!();
Expand Down
1 change: 1 addition & 0 deletions client/src/client_sync/v25/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ crate::impl_client_v20__generate_to_descriptor!();
crate::impl_client_v17__invalidate_block!();

// == Hidden ==
crate::impl_client_v22__add_connection!();
crate::impl_client_v21__add_peer_address!();
crate::impl_client_v17__estimate_raw_fee!();
crate::impl_client_v17__wait_for_block!();
Expand Down
1 change: 1 addition & 0 deletions client/src/client_sync/v26/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ crate::impl_client_v20__generate_to_descriptor!();
crate::impl_client_v17__invalidate_block!();

// == Hidden ==
crate::impl_client_v22__add_connection!();
crate::impl_client_v21__add_peer_address!();
crate::impl_client_v17__estimate_raw_fee!();
crate::impl_client_v17__wait_for_block!();
Expand Down
30 changes: 30 additions & 0 deletions client/src/client_sync/v27/hidden.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// SPDX-License-Identifier: CC0-1.0

//! Macros for implementing JSON-RPC methods on a client.
//!
//! Specifically this is `== Hidden ==` methods that are not listed in the
//! API docs of Bitcoin Core `v27`.
//!
//! All macros require `Client` to be in scope.
//!
//! See, or use the `define_jsonrpc_bitreq_client!` macro to define a `Client`.

/// Implements Bitcoin Core JSON-RPC API method `addconnection`.
#[macro_export]
macro_rules! impl_client_v27__add_connection {
() => {
impl Client {
pub fn add_connection(
&self,
address: &str,
connection_type: &str,
v2transport: bool,
) -> Result<AddConnection> {
self.call(
"addconnection",
&[into_json(address)?, into_json(connection_type)?, into_json(v2transport)?],
)
}
}
};
}
3 changes: 3 additions & 0 deletions client/src/client_sync/v27/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
//!
//! We ignore option arguments unless they effect the shape of the returned JSON data.

pub mod hidden;

use std::collections::BTreeMap;
use std::path::Path;

Expand Down Expand Up @@ -74,6 +76,7 @@ crate::impl_client_v20__generate_to_descriptor!();
crate::impl_client_v17__invalidate_block!();

// == Hidden ==
crate::impl_client_v27__add_connection!();
crate::impl_client_v21__add_peer_address!();
crate::impl_client_v17__estimate_raw_fee!();
crate::impl_client_v17__wait_for_block!();
Expand Down
1 change: 1 addition & 0 deletions client/src/client_sync/v28/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ crate::impl_client_v20__generate_to_descriptor!();
crate::impl_client_v17__invalidate_block!();

// == Hidden ==
crate::impl_client_v27__add_connection!();
crate::impl_client_v21__add_peer_address!();
crate::impl_client_v17__estimate_raw_fee!();
crate::impl_client_v17__wait_for_block!();
Expand Down
1 change: 1 addition & 0 deletions client/src/client_sync/v29/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ crate::impl_client_v20__generate_to_descriptor!();
crate::impl_client_v17__invalidate_block!();

// == Hidden ==
crate::impl_client_v27__add_connection!();
crate::impl_client_v21__add_peer_address!();
crate::impl_client_v17__estimate_raw_fee!();
crate::impl_client_v17__wait_for_block!();
Expand Down
1 change: 1 addition & 0 deletions client/src/client_sync/v30/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ crate::impl_client_v20__generate_to_descriptor!();
crate::impl_client_v17__invalidate_block!();

// == Hidden ==
crate::impl_client_v27__add_connection!();
crate::impl_client_v21__add_peer_address!();

// == Mining ==
Expand Down
32 changes: 32 additions & 0 deletions integration_test/tests/hidden.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,38 @@
use integration_test::{Node, NodeExt as _, Wallet};
use node::mtype;
use node::vtype::*; // All the version specific types.
#[cfg(not(feature = "v21_and_below"))]
use node::P2P;

#[test]
#[cfg(not(feature = "v21_and_below"))]
fn hidden__add_connection() {
let (listener, dialer, _node3) = integration_test::three_node_network();

let p2p = listener.p2p_connect(false).expect("p2p address");
let address = match p2p {
P2P::Connect(socket, _) => socket.to_string(),
_ => unreachable!("p2p_connect should return P2P::Connect"),
};

let json: AddConnection = {
#[cfg(feature = "v26_and_below")]
{
dialer.client.add_connection(&address, "outbound-full-relay").expect("addconnection")
}
#[cfg(not(feature = "v26_and_below"))]
{
dialer
.client
.add_connection(&address, "outbound-full-relay", false)
.expect("addconnection")
}
};

assert_eq!(json.address, address);
assert_eq!(json.connection_type, "outbound-full-relay");
assert!(dialer.peers_connected() >= 1);
}

#[test]
fn hidden__estimate_raw_fee__modelled() {
Expand Down
22 changes: 22 additions & 0 deletions types/src/v22/hidden/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// SPDX-License-Identifier: CC0-1.0

//! The JSON-RPC API for Bitcoin Core `v22` - hidden.
//!
//! Types for methods that are excluded from the API docs by default.

use serde::{Deserialize, Serialize};

/// Result of JSON-RPC method `addconnection`.
///
/// > addconnection "address" "connection_type"
/// >
/// > Open an outbound connection to a specified node.
/// > This RPC is for testing only.
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "serde-deny-unknown-fields", serde(deny_unknown_fields))]
pub struct AddConnection {
/// The address of the newly added connection.
pub address: String,
/// Type of connection.
pub connection_type: String,
}
2 changes: 2 additions & 0 deletions types/src/v22/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@
// JSON-RPC types by API section.
mod blockchain;
mod control;
mod hidden;
mod network;
mod raw_transactions;
mod signer;
Expand All @@ -254,6 +255,7 @@ mod wallet;
pub use self::{
blockchain::GetMempoolInfo,
control::Logging,
hidden::AddConnection,
network::{Banned, GetNodeAddresses, GetPeerInfo, ListBanned, NodeAddress, PeerInfo},
raw_transactions::{
DecodeScript, DecodeScriptError, DecodeScriptSegwit, MempoolAcceptance,
Expand Down
8 changes: 4 additions & 4 deletions types/src/v23/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -321,9 +321,9 @@ pub use crate::{
SendMany, SendManyVerbose, UnloadWallet, UpgradeWallet,
},
v22::{
Banned, DescriptorInfo, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded,
GetMempoolInfo, GetNodeAddresses, ListBanned, ListDescriptors, MempoolAcceptance,
MempoolAcceptanceError, MempoolAcceptanceFees, NodeAddress, ScriptPubkey, Signers,
TestMempoolAccept, TestMempoolAcceptError, WalletDisplayAddress,
AddConnection, Banned, DescriptorInfo, EnumerateSigners, GetAddressInfo,
GetAddressInfoEmbedded, GetMempoolInfo, GetNodeAddresses, ListBanned, ListDescriptors,
MempoolAcceptance, MempoolAcceptanceError, MempoolAcceptanceFees, NodeAddress,
ScriptPubkey, Signers, TestMempoolAccept, TestMempoolAcceptError, WalletDisplayAddress,
},
};
8 changes: 4 additions & 4 deletions types/src/v24/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -321,10 +321,10 @@ pub use crate::{
SendMany, SendManyVerbose, UnloadWallet, UpgradeWallet,
},
v22::{
Banned, DescriptorInfo, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded,
GetNodeAddresses, ListBanned, ListDescriptors, MempoolAcceptance, MempoolAcceptanceError,
MempoolAcceptanceFees, NodeAddress, ScriptPubkey, Signers, TestMempoolAccept,
TestMempoolAcceptError, WalletDisplayAddress,
AddConnection, Banned, DescriptorInfo, EnumerateSigners, GetAddressInfo,
GetAddressInfoEmbedded, GetNodeAddresses, ListBanned, ListDescriptors, MempoolAcceptance,
MempoolAcceptanceError, MempoolAcceptanceFees, NodeAddress, ScriptPubkey, Signers,
TestMempoolAccept, TestMempoolAcceptError, WalletDisplayAddress,
},
v23::{
AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript,
Expand Down
4 changes: 2 additions & 2 deletions types/src/v25/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -314,8 +314,8 @@ pub use crate::{
SendManyVerbose, UpgradeWallet,
},
v22::{
Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, GetNodeAddresses,
ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress,
AddConnection, Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded,
GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress,
},
v23::{
AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript,
Expand Down
4 changes: 2 additions & 2 deletions types/src/v26/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -329,8 +329,8 @@ pub use crate::{
SendManyVerbose, UpgradeWallet,
},
v22::{
Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, GetNodeAddresses,
ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress,
AddConnection, Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded,
GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress,
},
v23::{
AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript,
Expand Down
4 changes: 2 additions & 2 deletions types/src/v27/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,8 @@ pub use crate::{
SendManyVerbose, UpgradeWallet,
},
v22::{
Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded, GetNodeAddresses,
ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress,
AddConnection, Banned, EnumerateSigners, GetAddressInfo, GetAddressInfoEmbedded,
GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers, WalletDisplayAddress,
},
v23::{
AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript,
Expand Down
4 changes: 2 additions & 2 deletions types/src/v28/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -325,8 +325,8 @@ pub use crate::{
PsbtBumpFee, PsbtBumpFeeError, Send, SendError, SendMany, SendManyVerbose, UpgradeWallet,
},
v22::{
Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers,
WalletDisplayAddress,
AddConnection, Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress,
ScriptPubkey, Signers, WalletDisplayAddress,
},
v23::{
AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript,
Expand Down
4 changes: 2 additions & 2 deletions types/src/v29/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -319,8 +319,8 @@ pub use crate::{
PsbtBumpFee, PsbtBumpFeeError, Send, SendError, SendMany, SendManyVerbose, UpgradeWallet,
},
v22::{
Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers,
WalletDisplayAddress,
AddConnection, Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress,
ScriptPubkey, Signers, WalletDisplayAddress,
},
v23::{
AddMultisigAddress, Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript,
Expand Down
4 changes: 2 additions & 2 deletions types/src/v30/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -312,8 +312,8 @@ pub use crate::{
PsbtBumpFee, PsbtBumpFeeError, Send, SendError, SendMany, SendManyVerbose,
},
v22::{
Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress, ScriptPubkey, Signers,
WalletDisplayAddress,
AddConnection, Banned, EnumerateSigners, GetNodeAddresses, ListBanned, NodeAddress,
ScriptPubkey, Signers, WalletDisplayAddress,
},
v23::{
Bip9Info, Bip9Statistics, CreateMultisig, DecodeScript, DecodeScriptError,
Expand Down