Skip to content

Commit cfbc8a6

Browse files
committed
refactor: rpc: hide and rename ParseNonRFCJSONValue()
As per bitcoin/bitcoin#26506 (review), this function is no longer necessary and we can use UniValue::read() directly. To avoid code duplication, we keep the function to throw on invalid input data but rename it to Parse() and remove it from the header.
1 parent 6c8bde6 commit cfbc8a6

File tree

2 files changed

+10
-17
lines changed

2 files changed

+10
-17
lines changed

src/rpc/client.cpp

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,14 @@ static const CRPCConvertParam vRPCConvertParams[] =
222222
};
223223
// clang-format on
224224

225+
/** Parse string to UniValue or throw runtime_error if string contains invalid JSON */
226+
static UniValue Parse(std::string_view raw)
227+
{
228+
UniValue parsed;
229+
if (!parsed.read(raw)) throw std::runtime_error(tfm::format("Error parsing JSON: %s", raw));
230+
return parsed;
231+
}
232+
225233
class CRPCConvertTable
226234
{
227235
private:
@@ -234,13 +242,13 @@ class CRPCConvertTable
234242
/** Return arg_value as UniValue, and first parse it if it is a non-string parameter */
235243
UniValue ArgToUniValue(std::string_view arg_value, const std::string& method, int param_idx)
236244
{
237-
return members.count({method, param_idx}) > 0 ? ParseNonRFCJSONValue(arg_value) : arg_value;
245+
return members.count({method, param_idx}) > 0 ? Parse(arg_value) : arg_value;
238246
}
239247

240248
/** Return arg_value as UniValue, and first parse it if it is a non-string parameter */
241249
UniValue ArgToUniValue(std::string_view arg_value, const std::string& method, const std::string& param_name)
242250
{
243-
return membersByName.count({method, param_name}) > 0 ? ParseNonRFCJSONValue(arg_value) : arg_value;
251+
return membersByName.count({method, param_name}) > 0 ? Parse(arg_value) : arg_value;
244252
}
245253
};
246254

@@ -254,16 +262,6 @@ CRPCConvertTable::CRPCConvertTable()
254262

255263
static CRPCConvertTable rpcCvtTable;
256264

257-
/** Non-RFC4627 JSON parser, accepts internal values (such as numbers, true, false, null)
258-
* as well as objects and arrays.
259-
*/
260-
UniValue ParseNonRFCJSONValue(std::string_view raw)
261-
{
262-
UniValue parsed;
263-
if (!parsed.read(raw)) throw std::runtime_error(tfm::format("Error parsing JSON: %s", raw));
264-
return parsed;
265-
}
266-
267265
UniValue RPCConvertValues(const std::string &strMethod, const std::vector<std::string> &strParams)
268266
{
269267
UniValue params(UniValue::VARR);

src/rpc/client.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,4 @@ UniValue RPCConvertValues(const std::string& strMethod, const std::vector<std::s
1717
/** Convert named arguments to command-specific RPC representation */
1818
UniValue RPCConvertNamedValues(const std::string& strMethod, const std::vector<std::string>& strParams);
1919

20-
/** Non-RFC4627 JSON parser, accepts internal values (such as numbers, true, false, null)
21-
* as well as objects and arrays.
22-
*/
23-
UniValue ParseNonRFCJSONValue(std::string_view raw);
24-
2520
#endif // BITCOIN_RPC_CLIENT_H

0 commit comments

Comments
 (0)