From edd79c50a940e8e8bc3f62e727ea9b9cf71d141a Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Thu, 21 Mar 2013 13:11:27 -0700 Subject: [PATCH] Add RPC json. --- src/cpp/ripple/CallRPC.cpp | 20 ++++++++++++++++++++ src/cpp/ripple/CallRPC.h | 3 ++- src/cpp/ripple/main.cpp | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/cpp/ripple/CallRPC.cpp b/src/cpp/ripple/CallRPC.cpp index 03ed58a536..662170f2a8 100644 --- a/src/cpp/ripple/CallRPC.cpp +++ b/src/cpp/ripple/CallRPC.cpp @@ -328,6 +328,25 @@ Json::Value RPCParser::parseGetCounts(const Json::Value& jvParams) return jvRequest; } +// json +Json::Value RPCParser::parseJson(const Json::Value& jvParams) +{ + Json::Reader reader; + Json::Value jvRequest; + + cLog(lsTRACE) << "RPC method: " << jvParams[0u]; + cLog(lsTRACE) << "RPC json: " << jvParams[1u]; + + if (reader.parse(jvParams[1u].asString(), jvRequest)) + { + jvRequest["method"] = jvParams[0u]; + + return jvRequest; + } + + return rpcError(rpcINVALID_PARAMS); +} + // ledger [id|index|current|closed|validated] [full] Json::Value RPCParser::parseLedger(const Json::Value& jvParams) { @@ -631,6 +650,7 @@ Json::Value RPCParser::parseCommand(std::string strMethod, Json::Value jvParams) { "connect", &RPCParser::parseConnect, 1, 2 }, { "consensus_info", &RPCParser::parseAsIs, 0, 0 }, { "get_counts", &RPCParser::parseGetCounts, 0, 1 }, + { "json", &RPCParser::parseJson, 2, 2 }, { "ledger", &RPCParser::parseLedger, 0, 2 }, { "ledger_accept", &RPCParser::parseAsIs, 0, 0 }, { "ledger_closed", &RPCParser::parseAsIs, 0, 0 }, diff --git a/src/cpp/ripple/CallRPC.h b/src/cpp/ripple/CallRPC.h index 5d9a0377fc..c87ffbe958 100644 --- a/src/cpp/ripple/CallRPC.h +++ b/src/cpp/ripple/CallRPC.h @@ -23,9 +23,10 @@ protected: #endif Json::Value parseEvented(const Json::Value& jvParams); Json::Value parseGetCounts(const Json::Value& jvParams); + Json::Value parseInternal(const Json::Value& jvParams); + Json::Value parseJson(const Json::Value& jvParams); Json::Value parseLedger(const Json::Value& jvParams); Json::Value parseLedgerId(const Json::Value& jvParams); - Json::Value parseInternal(const Json::Value& jvParams); #if ENABLE_INSECURE Json::Value parseLogin(const Json::Value& jvParams); #endif diff --git a/src/cpp/ripple/main.cpp b/src/cpp/ripple/main.cpp index 1b3a9c9df2..8a7ed48b24 100644 --- a/src/cpp/ripple/main.cpp +++ b/src/cpp/ripple/main.cpp @@ -84,6 +84,7 @@ void printHelp(const po::options_description& desc) cerr << " data_store " << endl; #endif cerr << " get_counts" << endl; + cerr << " json " << endl; cerr << " ledger [|current|closed|validated] [full]" << endl; cerr << " ledger_accept" << endl; cerr << " ledger_closed" << endl;