Skip to content

Commit 53b4671

Browse files
committed
extend conversion to UniValue
1 parent 15982a8 commit 53b4671

File tree

13 files changed

+76
-69
lines changed

13 files changed

+76
-69
lines changed

src/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ BITCOIN_CORE_H = \
9898
ecwrapper.h \
9999
hash.h \
100100
init.h \
101+
json_spirit_wrapper.h \
101102
key.h \
102103
keystore.h \
103104
leveldbwrapper.h \

src/bitcoin-cli.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ Object CallRPC(const string& strMethod, const Array& params)
142142
throw runtime_error("no response from server");
143143

144144
// Parse reply
145-
Value valReply;
145+
Value valReply(UniValue::VSTR);
146146
if (!valReply.read(strReply))
147147
throw runtime_error("couldn't parse reply from server");
148148
const Object& reply = valReply.get_obj();

src/rest.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ static bool rest_block(AcceptedConnection* conn,
222222

223223
case RF_JSON: {
224224
Object objBlock = blockToJSON(block, pblockindex, showTxDetails);
225-
string strJSON = write_string(Value(objBlock), false) + "\n";
225+
string strJSON = objBlock.write() + "\n";
226226
conn->stream() << HTTPReply(HTTP_OK, strJSON, fRun) << std::flush;
227227
return true;
228228
}
@@ -267,8 +267,7 @@ static bool rest_chaininfo(AcceptedConnection* conn,
267267
case RF_JSON: {
268268
Array rpcParams;
269269
Value chainInfoObject = getblockchaininfo(rpcParams, false);
270-
271-
string strJSON = write_string(chainInfoObject, false) + "\n";
270+
string strJSON = chainInfoObject.write() + "\n";
272271
conn->stream() << HTTPReply(HTTP_OK, strJSON, fRun) << std::flush;
273272
return true;
274273
}
@@ -319,7 +318,7 @@ static bool rest_tx(AcceptedConnection* conn,
319318
case RF_JSON: {
320319
Object objTx;
321320
TxToJSON(tx, hashBlock, objTx);
322-
string strJSON = write_string(Value(objTx), false) + "\n";
321+
string strJSON = objTx.write() + "\n";
323322
conn->stream() << HTTPReply(HTTP_OK, strJSON, fRun) << std::flush;
324323
return true;
325324
}
@@ -516,7 +515,7 @@ static bool rest_getutxos(AcceptedConnection* conn,
516515
objGetUTXOResponse.push_back(Pair("utxos", utxos));
517516

518517
// return json string
519-
string strJSON = write_string(Value(objGetUTXOResponse), false) + "\n";
518+
string strJSON = objGetUTXOResponse.write() + "\n";
520519
conn->stream() << HTTPReply(HTTP_OK, strJSON, fRun) << std::flush;
521520
return true;
522521
}

src/rpcblockchain.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,7 @@ Value invalidateblock(const Array& params, bool fHelp)
678678
throw JSONRPCError(RPC_DATABASE_ERROR, state.GetRejectReason());
679679
}
680680

681-
return Value::null;
681+
return NullUniValue;
682682
}
683683

684684
Value reconsiderblock(const Array& params, bool fHelp)
@@ -717,5 +717,5 @@ Value reconsiderblock(const Array& params, bool fHelp)
717717
throw JSONRPCError(RPC_DATABASE_ERROR, state.GetRejectReason());
718718
}
719719

720-
return Value::null;
720+
return NullUniValue;
721721
}

src/rpcclient.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ static CRPCConvertTable rpcCvtTable;
122122
/** Convert strings to command-specific RPC representation */
123123
Array RPCConvertValues(const std::string &strMethod, const std::vector<std::string> &strParams)
124124
{
125-
Array params;
125+
UniValue params(UniValue::VARR);
126126

127127
for (unsigned int idx = 0; idx < strParams.size(); idx++) {
128128
const std::string& strVal = strParams[idx];

src/rpcmining.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ Value getblocktemplate(const Array& params, bool fHelp)
399399
if (strMode == "proposal")
400400
{
401401
const Value& dataval = find_value(oparam, "data");
402-
if (dataval.type() != str_type)
402+
if (dataval.isStr())
403403
throw JSONRPCError(RPC_TYPE_ERROR, "Missing data String key for proposal");
404404

405405
CBlock block;
@@ -519,7 +519,7 @@ Value getblocktemplate(const Array& params, bool fHelp)
519519
UpdateTime(pblock, Params().GetConsensus(), pindexPrev);
520520
pblock->nNonce = 0;
521521

522-
static const Array aCaps = boost::assign::list_of("proposal");
522+
Array aCaps; aCaps.push_back("proposal");
523523

524524
Array transactions;
525525
map<uint256, int64_t> setTxIndex;

src/rpcmisc.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,8 +389,8 @@ Value setmocktime(const Array& params, bool fHelp)
389389

390390
LOCK(cs_main);
391391

392-
RPCTypeCheck(params, boost::assign::list_of(int_type));
392+
RPCTypeCheck(params, boost::assign::list_of(UniValue::VNUM));
393393
SetMockTime(params[0].get_int64());
394394

395-
return Value::null;
395+
return NullUniValue;
396396
}

src/rpcprotocol.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ int ReadHTTPMessage(std::basic_istream<char>& stream, map<string,
256256

257257
string JSONRPCRequest(const string& strMethod, const Array& params, const Value& id)
258258
{
259-
Object request;
259+
Object request(UniValue::VOBJ);
260260
request.push_back(Pair("method", strMethod));
261261
request.push_back(Pair("params", params));
262262
request.push_back(Pair("id", id));
@@ -265,7 +265,7 @@ string JSONRPCRequest(const string& strMethod, const Array& params, const Value&
265265

266266
Object JSONRPCReplyObj(const Value& result, const Value& error, const Value& id)
267267
{
268-
Object reply;
268+
Object reply(UniValue::VOBJ);
269269
if (!error.isNull())
270270
reply.push_back(Pair("result", NullUniValue));
271271
else
@@ -283,7 +283,7 @@ string JSONRPCReply(const Value& result, const Value& error, const Value& id)
283283

284284
Object JSONRPCError(int code, const string& message)
285285
{
286-
Object error;
286+
UniValue error(UniValue::VOBJ);
287287
error.push_back(Pair("code", code));
288288
error.push_back(Pair("message", message));
289289
return error;

src/rpcrawtransaction.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,8 @@ Value gettxoutproof(const Array& params, bool fHelp)
220220
set<uint256> setTxids;
221221
uint256 oneTxid;
222222
Array txids = params[0].get_array();
223-
BOOST_FOREACH(Value& txid, txids) {
223+
for (unsigned int idx = 0; idx < txids.size(); idx++) {
224+
const Value& txid = txids[idx];
224225
if (txid.get_str().length() != 64 || !IsHex(txid.get_str()))
225226
throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid txid ")+txid.get_str());
226227
uint256 hash(uint256S(txid.get_str()));
@@ -446,7 +447,7 @@ Value decoderawtransaction(const Array& params, bool fHelp)
446447
if (!DecodeHexTx(tx, params[0].get_str()))
447448
throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "TX decode failed");
448449

449-
Object result;
450+
UniValue result(UniValue::VOBJ);
450451
TxToJSON(tx, uint256(), result);
451452

452453
return result;
@@ -478,7 +479,7 @@ Value decodescript(const Array& params, bool fHelp)
478479
);
479480

480481
LOCK(cs_main);
481-
RPCTypeCheck(params, boost::assign::list_of(str_type));
482+
RPCTypeCheck(params, boost::assign::list_of(UniValue::VSTR));
482483

483484
Object r;
484485
CScript script;

src/test/script_tests.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -583,11 +583,13 @@ BOOST_AUTO_TEST_CASE(script_build)
583583
Array json_good = read_json(std::string(json_tests::script_valid, json_tests::script_valid + sizeof(json_tests::script_valid)));
584584
Array json_bad = read_json(std::string(json_tests::script_invalid, json_tests::script_invalid + sizeof(json_tests::script_invalid)));
585585

586-
BOOST_FOREACH(Value& tv, json_good) {
587-
tests_good.insert(write_string(Value(tv.get_array()), true));
586+
for (unsigned int idx = 0; idx < json_good.size(); idx++) {
587+
const Value& tv = json_good[idx];
588+
tests_good.insert(tv.get_array().write());
588589
}
589-
BOOST_FOREACH(Value& tv, json_bad) {
590-
tests_bad.insert(write_string(Value(tv.get_array()), true));
590+
for (unsigned int idx = 0; idx < json_bad.size(); idx++) {
591+
const Value& tv = json_bad[idx];
592+
tests_bad.insert(tv.get_array().write());
591593
}
592594
}
593595

@@ -596,7 +598,7 @@ BOOST_AUTO_TEST_CASE(script_build)
596598

597599
BOOST_FOREACH(TestBuilder& test, good) {
598600
test.Test(true);
599-
std::string str = write_string(Value(test.GetJSON()), true);
601+
std::string str = test.GetJSON().write();
600602
#ifndef UPDATE_JSON_TESTS
601603
if (tests_good.count(str) == 0) {
602604
BOOST_CHECK_MESSAGE(false, "Missing auto script_valid test: " + test.GetComment());
@@ -606,7 +608,7 @@ BOOST_AUTO_TEST_CASE(script_build)
606608
}
607609
BOOST_FOREACH(TestBuilder& test, bad) {
608610
test.Test(false);
609-
std::string str = write_string(Value(test.GetJSON()), true);
611+
std::string str = test.GetJSON().write();
610612
#ifndef UPDATE_JSON_TESTS
611613
if (tests_bad.count(str) == 0) {
612614
BOOST_CHECK_MESSAGE(false, "Missing auto script_invalid test: " + test.GetComment());

0 commit comments

Comments
 (0)