mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-22 21:50:14 +01:00
rpc: Use RPCHelpMan for check-rpc-mappings linter
This commit is contained in:
@@ -144,8 +144,13 @@ static RPCHelpMan help()
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& jsonRequest) -> UniValue
|
||||
{
|
||||
std::string strCommand;
|
||||
if (jsonRequest.params.size() > 0)
|
||||
if (jsonRequest.params.size() > 0) {
|
||||
strCommand = jsonRequest.params[0].get_str();
|
||||
}
|
||||
if (strCommand == "dump_all_command_conversions") {
|
||||
// Used for testing only, undocumented
|
||||
return tableRPC.dumpArgMap();
|
||||
}
|
||||
|
||||
return tableRPC.help(strCommand, jsonRequest);
|
||||
},
|
||||
@@ -479,6 +484,18 @@ std::vector<std::string> CRPCTable::listCommands() const
|
||||
return commandList;
|
||||
}
|
||||
|
||||
UniValue CRPCTable::dumpArgMap() const
|
||||
{
|
||||
UniValue ret{UniValue::VARR};
|
||||
for (const auto& cmd : mapCommands) {
|
||||
for (const auto& c : cmd.second) {
|
||||
const auto help = RpcMethodFnType(c->unique_id)();
|
||||
help.AppendArgMap(ret);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void RPCSetTimerInterfaceIfUnset(RPCTimerInterface *iface)
|
||||
{
|
||||
if (!timerInterface)
|
||||
|
||||
@@ -147,6 +147,10 @@ public:
|
||||
*/
|
||||
std::vector<std::string> listCommands() const;
|
||||
|
||||
/**
|
||||
* Return all named arguments that need to be converted by the client from string to another JSON type
|
||||
*/
|
||||
UniValue dumpArgMap() const;
|
||||
|
||||
/**
|
||||
* Appends a CRPCCommand to the dispatch table.
|
||||
|
||||
@@ -549,6 +549,24 @@ std::string RPCHelpMan::ToString() const
|
||||
return ret;
|
||||
}
|
||||
|
||||
void RPCHelpMan::AppendArgMap(UniValue& arr) const
|
||||
{
|
||||
for (int i{0}; i < int(m_args.size()); ++i) {
|
||||
const auto& arg = m_args.at(i);
|
||||
std::vector<std::string> arg_names;
|
||||
boost::split(arg_names, arg.m_names, boost::is_any_of("|"));
|
||||
for (const auto& arg_name : arg_names) {
|
||||
UniValue map{UniValue::VARR};
|
||||
map.push_back(m_name);
|
||||
map.push_back(i);
|
||||
map.push_back(arg_name);
|
||||
map.push_back(arg.m_type == RPCArg::Type::STR ||
|
||||
arg.m_type == RPCArg::Type::STR_HEX);
|
||||
arr.push_back(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::string RPCArg::GetFirstName() const
|
||||
{
|
||||
return m_names.substr(0, m_names.find("|"));
|
||||
|
||||
@@ -336,6 +336,8 @@ public:
|
||||
RPCHelpMan(std::string name, std::string description, std::vector<RPCArg> args, RPCResults results, RPCExamples examples, RPCMethodImpl fun);
|
||||
|
||||
std::string ToString() const;
|
||||
/** Append the named args that need to be converted from string to another JSON type */
|
||||
void AppendArgMap(UniValue& arr) const;
|
||||
UniValue HandleRequest(const JSONRPCRequest& request)
|
||||
{
|
||||
Check(request);
|
||||
|
||||
Reference in New Issue
Block a user