mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-24 14:40:12 +01:00
Merge bitcoin/bitcoin#29277: RPC: access RPC arguments by name
30a6c99935rpc: access some args by name (stickies-v)bbb31269bfrpc: add named arg helper (stickies-v)13525e0c24rpc: add arg helper unit test (stickies-v) Pull request description: Adds string overloads for the `RPCHelpMan::Arg` and `RPCHelpMan::MaybeArg` helpers to be able to access RPC arguments by name instead of index number. Especially in RPCs with a large number of parameters, this can be quite helpful. Example usage: ```cpp const auto action{self.Arg<std::string>("action")}; ``` Most of the LoC is adding test coverage and documentation updates. No behaviour change. An alternative approach to #27788 with significantly less overhaul. ACKs for top commit: fjahr: Code review ACK30a6c99935maflcko: ACK30a6c99935🥑 ryanofsky: Code review ACK30a6c99935. Nice change! Implementation is surprisingly simple and additional unit test coverage is welcome, too. Tree-SHA512: 4904f5f914fe1d421d32f60edb7c5a028c8ea0f140a2f207a106b4752d441164e073066a6bf2e17693f859fe847815a96609d3cf521e0ac4178d8cd09362ea3d
This commit is contained in:
@@ -122,7 +122,7 @@ static RPCHelpMan getnetworkhashps()
|
||||
{
|
||||
ChainstateManager& chainman = EnsureAnyChainman(request.context);
|
||||
LOCK(cs_main);
|
||||
return GetNetworkHashPS(self.Arg<int>(0), self.Arg<int>(1), chainman.ActiveChain());
|
||||
return GetNetworkHashPS(self.Arg<int>("nblocks"), self.Arg<int>("height"), chainman.ActiveChain());
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -229,12 +229,12 @@ static RPCHelpMan generatetodescriptor()
|
||||
"\nGenerate 11 blocks to mydesc\n" + HelpExampleCli("generatetodescriptor", "11 \"mydesc\"")},
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
const auto num_blocks{self.Arg<int>(0)};
|
||||
const auto max_tries{self.Arg<uint64_t>(2)};
|
||||
const auto num_blocks{self.Arg<int>("num_blocks")};
|
||||
const auto max_tries{self.Arg<uint64_t>("maxtries")};
|
||||
|
||||
CScript coinbase_script;
|
||||
std::string error;
|
||||
if (!getScriptFromDescriptor(self.Arg<std::string>(1), coinbase_script, error)) {
|
||||
if (!getScriptFromDescriptor(self.Arg<std::string>("descriptor"), coinbase_script, error)) {
|
||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, error);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user