mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-21 14:34:49 +01:00
refactor: Replace JSONRPCRequest fHelp field with mode field
No change in behavior
This commit is contained in:
parent
80e16cadd5
commit
6158a6d397
6 changed files with 18 additions and 21 deletions
|
@ -34,19 +34,19 @@ public:
|
|||
UniValue id;
|
||||
std::string strMethod;
|
||||
UniValue params;
|
||||
bool fHelp;
|
||||
enum Mode { EXECUTE, GET_HELP } mode = EXECUTE;
|
||||
std::string URI;
|
||||
std::string authUser;
|
||||
std::string peerAddr;
|
||||
const util::Ref& context;
|
||||
|
||||
explicit JSONRPCRequest(const util::Ref& context) : id(NullUniValue), params(NullUniValue), fHelp(false), context(context) {}
|
||||
explicit JSONRPCRequest(const util::Ref& context) : id(NullUniValue), params(NullUniValue), context(context) {}
|
||||
|
||||
//! Initializes request information from another request object and the
|
||||
//! given context. The implementation should be updated if any members are
|
||||
//! added or removed above.
|
||||
JSONRPCRequest(const JSONRPCRequest& other, const util::Ref& context)
|
||||
: id(other.id), strMethod(other.strMethod), params(other.params), fHelp(other.fHelp), URI(other.URI),
|
||||
: id(other.id), strMethod(other.strMethod), params(other.params), mode(other.mode), URI(other.URI),
|
||||
authUser(other.authUser), peerAddr(other.peerAddr), context(context)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -88,7 +88,7 @@ std::string CRPCTable::help(const std::string& strCommand, const JSONRPCRequest&
|
|||
sort(vCommands.begin(), vCommands.end());
|
||||
|
||||
JSONRPCRequest jreq(helpreq);
|
||||
jreq.fHelp = true;
|
||||
jreq.mode = JSONRPCRequest::GET_HELP;
|
||||
jreq.params = UniValue();
|
||||
|
||||
for (const std::pair<std::string, const CRPCCommand*>& command : vCommands)
|
||||
|
|
|
@ -476,6 +476,18 @@ std::string RPCExamples::ToDescriptionString() const
|
|||
return m_examples.empty() ? m_examples : "\nExamples:\n" + m_examples;
|
||||
}
|
||||
|
||||
UniValue RPCHelpMan::HandleRequest(const JSONRPCRequest& request)
|
||||
{
|
||||
/*
|
||||
* Check if the given request is valid according to this command or if
|
||||
* the user is asking for help information, and throw help when appropriate.
|
||||
*/
|
||||
if (request.mode == JSONRPCRequest::GET_HELP || !IsValidNumArgs(request.params.size())) {
|
||||
throw std::runtime_error(ToString());
|
||||
}
|
||||
return m_fun(*this, request);
|
||||
}
|
||||
|
||||
bool RPCHelpMan::IsValidNumArgs(size_t num_args) const
|
||||
{
|
||||
size_t num_required_args = 0;
|
||||
|
|
|
@ -335,26 +335,12 @@ public:
|
|||
using RPCMethodImpl = std::function<UniValue(const RPCHelpMan&, const JSONRPCRequest&)>;
|
||||
RPCHelpMan(std::string name, std::string description, std::vector<RPCArg> args, RPCResults results, RPCExamples examples, RPCMethodImpl fun);
|
||||
|
||||
UniValue HandleRequest(const JSONRPCRequest& request);
|
||||
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);
|
||||
return m_fun(*this, request);
|
||||
}
|
||||
/** If the supplied number of args is neither too small nor too high */
|
||||
bool IsValidNumArgs(size_t num_args) const;
|
||||
/**
|
||||
* Check if the given request is valid according to this command or if
|
||||
* the user is asking for help information, and throw help when appropriate.
|
||||
*/
|
||||
inline void Check(const JSONRPCRequest& request) const {
|
||||
if (request.fHelp || !IsValidNumArgs(request.params.size())) {
|
||||
throw std::runtime_error(ToString());
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<std::string> GetArgNames() const;
|
||||
|
||||
const std::string m_name;
|
||||
|
|
|
@ -36,7 +36,6 @@ UniValue RPCTestingSetup::CallRPC(std::string args)
|
|||
JSONRPCRequest request(context);
|
||||
request.strMethod = strMethod;
|
||||
request.params = RPCConvertValues(strMethod, vArgs);
|
||||
request.fHelp = false;
|
||||
if (RPCIsInWarmup(nullptr)) SetRPCWarmupFinished();
|
||||
try {
|
||||
UniValue result = tableRPC.execute(request);
|
||||
|
|
|
@ -96,7 +96,7 @@ bool GetWalletNameFromJSONRPCRequest(const JSONRPCRequest& request, std::string&
|
|||
|
||||
std::shared_ptr<CWallet> GetWalletForJSONRPCRequest(const JSONRPCRequest& request)
|
||||
{
|
||||
CHECK_NONFATAL(!request.fHelp);
|
||||
CHECK_NONFATAL(request.mode == JSONRPCRequest::EXECUTE);
|
||||
std::string wallet_name;
|
||||
if (GetWalletNameFromJSONRPCRequest(request, wallet_name)) {
|
||||
std::shared_ptr<CWallet> pwallet = GetWallet(wallet_name);
|
||||
|
|
Loading…
Add table
Reference in a new issue