/** Convert strings to command-specific RPC representation */ UniValue RPCConvertValues(const std::string& strMethod, const std::vector<std::string>& strParams) { UniValue params(UniValue::VARR); for (unsigned int idx = 0; idx < strParams.size(); idx++) { const std::string& strVal = strParams[idx]; if (!rpcCvtTable.convert(strMethod, idx)) { params.push_back(strVal); } else { params.push_back(ParseNonRFCJSONValue(strVal)); } } return params; }
UniValue RPCConvertValues(const std::string &strMethod, const std::vector<std::string> &strParams) { UniValue params(UniValue::VARR); for (unsigned int idx = 0; idx < strParams.size(); idx++) { const std::string& strVal = strParams[idx]; if (!rpcCvtTable.convert(strMethod, idx)) { // insert string value directly params.push_back(strVal); } else { // parse string as JSON, insert bool/number/object/etc. value params.push_back(ParseNonRFCJSONValue(strVal)); } } return params; }
// Convert strings to command-specific RPC representation json_spirit::Array RPCConvertValues(const std::string &strMethod, const std::vector<std::string> &strParams) { json_spirit::Array params; for (unsigned int idx = 0; idx < strParams.size(); idx++) { const std::string& strVal = strParams[idx]; // insert string value directly if (!rpcCvtTable.convert(strMethod, idx)) params.push_back(strVal); // parse string as JSON, insert bool/number/object/etc. value else { json_spirit::Value jVal; if (!read_string(strVal, jVal)) throw std::runtime_error(std::string("Error parsing JSON:") + strVal); params.push_back(jVal); } } return params; }
UniValue RPCConvertNamedValues(const std::string &strMethod, const std::vector<std::string> &strParams) { UniValue params(UniValue::VOBJ); for (const std::string &s: strParams) { size_t pos = s.find('='); if (pos == std::string::npos) { throw(std::runtime_error("No '=' in named argument '"+s+"', this needs to be present for every argument (even if it is empty)")); } std::string name = s.substr(0, pos); std::string value = s.substr(pos+1); if (!rpcCvtTable.convert(strMethod, name)) { // insert string value directly params.pushKV(name, value); } else { // parse string as JSON, insert bool/number/object/etc. value params.pushKV(name, ParseNonRFCJSONValue(value)); } } return params; }