Clean up getbalance RPC parameter handling
Only change in behavior is that unsupported combinations of parameters now trigger more specific error messages instead of the vague "JSON value is not a string as expected" error.
This commit is contained in:
parent
fd5d71ec4b
commit
745d2e315f
1 changed files with 20 additions and 7 deletions
|
@ -768,18 +768,31 @@ UniValue getbalance(const JSONRPCRequest& request)
|
|||
|
||||
LOCK2(cs_main, pwallet->cs_wallet);
|
||||
|
||||
if (request.params[0].isNull() && request.params[1].isNull() && request.params[2].isNull())
|
||||
return ValueFromAmount(pwallet->GetBalance());
|
||||
const UniValue& account_value = request.params[0];
|
||||
const UniValue& minconf = request.params[1];
|
||||
const UniValue& include_watchonly = request.params[2];
|
||||
|
||||
const std::string& account_param = request.params[0].get_str();
|
||||
if (account_value.isNull()) {
|
||||
if (!minconf.isNull()) {
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER,
|
||||
"getbalance minconf option is only currently supported if an account is specified");
|
||||
}
|
||||
if (!include_watchonly.isNull()) {
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER,
|
||||
"getbalance include_watchonly option is only currently supported if an account is specified");
|
||||
}
|
||||
return ValueFromAmount(pwallet->GetBalance());
|
||||
}
|
||||
|
||||
const std::string& account_param = account_value.get_str();
|
||||
const std::string* account = account_param != "*" ? &account_param : nullptr;
|
||||
|
||||
int nMinDepth = 1;
|
||||
if (!request.params[1].isNull())
|
||||
nMinDepth = request.params[1].get_int();
|
||||
if (!minconf.isNull())
|
||||
nMinDepth = minconf.get_int();
|
||||
isminefilter filter = ISMINE_SPENDABLE;
|
||||
if(!request.params[2].isNull())
|
||||
if(request.params[2].get_bool())
|
||||
if(!include_watchonly.isNull())
|
||||
if(include_watchonly.get_bool())
|
||||
filter = filter | ISMINE_WATCH_ONLY;
|
||||
|
||||
return ValueFromAmount(pwallet->GetLegacyBalance(filter, nMinDepth, account));
|
||||
|
|
Loading…
Reference in a new issue