Remove JSON Spirit wrapper, remove JSON Spirit leftovers

- implement find_value() function for UniValue
- replace all Array/Value/Object types with UniValues, remove JSON Spirit to UniValue wrapper
- remove JSON Spirit sources
This commit is contained in:
Jonas Schnelli
2015-05-18 14:02:18 +02:00
committed by Jack Grigg
parent 851f58f94e
commit d014114d67
37 changed files with 212 additions and 2209 deletions

View File

@@ -31,12 +31,11 @@
#include <boost/assign/list_of.hpp>
#include "json_spirit_wrapper.h"
#include "univalue/univalue.h"
#include <numeric>
using namespace std;
using namespace json_spirit;
using namespace libzcash;
@@ -73,7 +72,7 @@ void EnsureWalletIsUnlocked()
throw JSONRPCError(RPC_WALLET_UNLOCK_NEEDED, "Error: Please enter the wallet passphrase with walletpassphrase first.");
}
void WalletTxToJSON(const CWalletTx& wtx, Object& entry)
void WalletTxToJSON(const CWalletTx& wtx, UniValue& entry)
{
int confirms = wtx.GetDepthInMainChain();
entry.push_back(Pair("confirmations", confirms));
@@ -99,7 +98,7 @@ void WalletTxToJSON(const CWalletTx& wtx, Object& entry)
entry.push_back(Pair("vjoinsplit", TxJoinSplitToJSON(wtx)));
}
string AccountFromValue(const Value& value)
string AccountFromValue(const UniValue& value)
{
string strAccount = value.get_str();
if (strAccount != "")
@@ -107,7 +106,7 @@ string AccountFromValue(const Value& value)
return strAccount;
}
Value getnewaddress(const Array& params, bool fHelp)
UniValue getnewaddress(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -184,7 +183,7 @@ CBitcoinAddress GetAccountAddress(string strAccount, bool bForceNew=false)
return CBitcoinAddress(account.vchPubKey.GetID());
}
Value getaccountaddress(const Array& params, bool fHelp)
UniValue getaccountaddress(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -209,14 +208,14 @@ Value getaccountaddress(const Array& params, bool fHelp)
// Parse the account first so we don't generate a key if there's an error
string strAccount = AccountFromValue(params[0]);
Value ret;
UniValue ret(UniValue::VSTR);
ret = GetAccountAddress(strAccount).ToString();
return ret;
}
Value getrawchangeaddress(const Array& params, bool fHelp)
UniValue getrawchangeaddress(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -251,7 +250,7 @@ Value getrawchangeaddress(const Array& params, bool fHelp)
}
Value setaccount(const Array& params, bool fHelp)
UniValue setaccount(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -297,7 +296,7 @@ Value setaccount(const Array& params, bool fHelp)
}
Value getaccount(const Array& params, bool fHelp)
UniValue getaccount(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -329,7 +328,7 @@ Value getaccount(const Array& params, bool fHelp)
}
Value getaddressesbyaccount(const Array& params, bool fHelp)
UniValue getaddressesbyaccount(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -397,7 +396,7 @@ static void SendMoney(const CTxDestination &address, CAmount nValue, bool fSubtr
throw JSONRPCError(RPC_WALLET_ERROR, "Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.");
}
Value sendtoaddress(const Array& params, bool fHelp)
UniValue sendtoaddress(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -453,7 +452,7 @@ Value sendtoaddress(const Array& params, bool fHelp)
return wtx.GetHash().GetHex();
}
Value listaddressgroupings(const Array& params, bool fHelp)
UniValue listaddressgroupings(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -504,7 +503,7 @@ Value listaddressgroupings(const Array& params, bool fHelp)
return jsonGroupings;
}
Value signmessage(const Array& params, bool fHelp)
UniValue signmessage(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -560,7 +559,7 @@ Value signmessage(const Array& params, bool fHelp)
return EncodeBase64(&vchSig[0], vchSig.size());
}
Value getreceivedbyaddress(const Array& params, bool fHelp)
UniValue getreceivedbyaddress(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -618,7 +617,7 @@ Value getreceivedbyaddress(const Array& params, bool fHelp)
}
Value getreceivedbyaccount(const Array& params, bool fHelp)
UniValue getreceivedbyaccount(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -707,7 +706,7 @@ CAmount GetAccountBalance(const string& strAccount, int nMinDepth, const isminef
}
Value getbalance(const Array& params, bool fHelp)
UniValue getbalance(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -779,7 +778,7 @@ Value getbalance(const Array& params, bool fHelp)
return ValueFromAmount(nBalance);
}
Value getunconfirmedbalance(const UniValue &params, bool fHelp)
UniValue getunconfirmedbalance(const UniValue &params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -795,7 +794,7 @@ Value getunconfirmedbalance(const UniValue &params, bool fHelp)
}
Value movecmd(const Array& params, bool fHelp)
UniValue movecmd(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -865,7 +864,7 @@ Value movecmd(const Array& params, bool fHelp)
}
Value sendfrom(const Array& params, bool fHelp)
UniValue sendfrom(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -928,7 +927,7 @@ Value sendfrom(const Array& params, bool fHelp)
}
Value sendmany(const Array& params, bool fHelp)
UniValue sendmany(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1007,7 +1006,7 @@ Value sendmany(const Array& params, bool fHelp)
bool fSubtractFeeFromAmount = false;
for (unsigned int idx = 0; idx < subtractFeeFromAmount.size(); idx++) {
const Value& addr = subtractFeeFromAmount[idx];
const UniValue& addr = subtractFeeFromAmount[idx];
if (addr.get_str() == name_)
fSubtractFeeFromAmount = true;
}
@@ -1038,9 +1037,9 @@ Value sendmany(const Array& params, bool fHelp)
}
// Defined in rpcmisc.cpp
extern CScript _createmultisig_redeemScript(const Array& params);
extern CScript _createmultisig_redeemScript(const UniValue& params);
Value addmultisigaddress(const Array& params, bool fHelp)
UniValue addmultisigaddress(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1103,7 +1102,7 @@ struct tallyitem
}
};
Value ListReceived(const Array& params, bool fByAccounts)
UniValue ListReceived(const UniValue& params, bool fByAccounts)
{
// Minimum confirmations
int nMinDepth = 1;
@@ -1221,7 +1220,7 @@ Value ListReceived(const Array& params, bool fByAccounts)
return ret;
}
Value listreceivedbyaddress(const Array& params, bool fHelp)
UniValue listreceivedbyaddress(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1258,7 +1257,7 @@ Value listreceivedbyaddress(const Array& params, bool fHelp)
return ListReceived(params, false);
}
Value listreceivedbyaccount(const Array& params, bool fHelp)
UniValue listreceivedbyaccount(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1301,7 +1300,7 @@ static void MaybePushAddress(UniValue & entry, const CTxDestination &dest)
entry.push_back(Pair("address", addr.ToString()));
}
void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDepth, bool fLong, Array& ret, const isminefilter& filter)
void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDepth, bool fLong, UniValue& ret, const isminefilter& filter)
{
CAmount nFee;
string strSentAccount;
@@ -1373,7 +1372,7 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe
}
}
void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, Array& ret)
void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, UniValue& ret)
{
bool fAllAccounts = (strAccount == string("*"));
@@ -1390,7 +1389,7 @@ void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, Ar
}
}
Value listtransactions(const Array& params, bool fHelp)
UniValue listtransactions(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1512,7 +1511,7 @@ Value listtransactions(const Array& params, bool fHelp)
return ret;
}
Value listaccounts(const Array& params, bool fHelp)
UniValue listaccounts(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1592,7 +1591,7 @@ Value listaccounts(const Array& params, bool fHelp)
return ret;
}
Value listsinceblock(const Array& params, bool fHelp)
UniValue listsinceblock(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1683,7 +1682,7 @@ Value listsinceblock(const Array& params, bool fHelp)
return ret;
}
Value gettransaction(const Array& params, bool fHelp)
UniValue gettransaction(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1772,7 +1771,7 @@ Value gettransaction(const Array& params, bool fHelp)
}
Value backupwallet(const Array& params, bool fHelp)
UniValue backupwallet(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1815,7 +1814,7 @@ Value backupwallet(const Array& params, bool fHelp)
}
Value keypoolrefill(const Array& params, bool fHelp)
UniValue keypoolrefill(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1859,7 +1858,7 @@ static void LockWallet(CWallet* pWallet)
pWallet->Lock();
}
Value walletpassphrase(const Array& params, bool fHelp)
UniValue walletpassphrase(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1921,7 +1920,7 @@ Value walletpassphrase(const Array& params, bool fHelp)
}
Value walletpassphrasechange(const Array& params, bool fHelp)
UniValue walletpassphrasechange(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -1967,7 +1966,7 @@ Value walletpassphrasechange(const Array& params, bool fHelp)
}
Value walletlock(const Array& params, bool fHelp)
UniValue walletlock(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -2006,7 +2005,7 @@ Value walletlock(const Array& params, bool fHelp)
}
Value encryptwallet(const Array& params, bool fHelp)
UniValue encryptwallet(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -2074,7 +2073,7 @@ Value encryptwallet(const Array& params, bool fHelp)
return "wallet encrypted; Zcash server stopping, restart to run with encrypted wallet. The keypool has been flushed, you need to make a new backup.";
}
Value lockunspent(const Array& params, bool fHelp)
UniValue lockunspent(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -2135,7 +2134,7 @@ Value lockunspent(const Array& params, bool fHelp)
const UniValue& output = outputs[idx];
if (!output.isObject())
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, expected object");
const Object& o = output.get_obj();
const UniValue& o = output.get_obj();
RPCTypeCheckObj(o, boost::assign::map_list_of("txid", UniValue::VSTR)("vout", UniValue::VNUM));
@@ -2158,7 +2157,7 @@ Value lockunspent(const Array& params, bool fHelp)
return true;
}
Value listlockunspent(const Array& params, bool fHelp)
UniValue listlockunspent(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -2207,7 +2206,7 @@ Value listlockunspent(const Array& params, bool fHelp)
return ret;
}
Value settxfee(const Array& params, bool fHelp)
UniValue settxfee(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -2236,7 +2235,7 @@ Value settxfee(const Array& params, bool fHelp)
return true;
}
Value getwalletinfo(const Array& params, bool fHelp)
UniValue getwalletinfo(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -2276,7 +2275,7 @@ Value getwalletinfo(const Array& params, bool fHelp)
return obj;
}
Value resendwallettransactions(const Array& params, bool fHelp)
UniValue resendwallettransactions(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -2301,7 +2300,7 @@ Value resendwallettransactions(const Array& params, bool fHelp)
return result;
}
Value listunspent(const Array& params, bool fHelp)
UniValue listunspent(const UniValue& params, bool fHelp)
{
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
@@ -2356,7 +2355,7 @@ Value listunspent(const Array& params, bool fHelp)
if (params.size() > 2) {
UniValue inputs = params[2].get_array();
for (unsigned int idx = 0; idx < inputs.size(); idx++) {
const Value& input = inputs[idx];
const UniValue& input = inputs[idx];
CBitcoinAddress address(input.get_str());
if (!address.IsValid())
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid Zcash address: ")+input.get_str());