Add ParseRange function to parse args of the form int/[int,int]
This commit is contained in:
parent
29c24b05fb
commit
7aa6a8aefb
2 changed files with 17 additions and 0 deletions
|
@ -523,3 +523,17 @@ std::string RPCArg::ToString(const bool oneline) const
|
|||
}
|
||||
assert(false);
|
||||
}
|
||||
|
||||
std::pair<int64_t, int64_t> ParseRange(const UniValue& value)
|
||||
{
|
||||
if (value.isNum()) {
|
||||
return {0, value.get_int64()};
|
||||
}
|
||||
if (value.isArray() && value.size() == 2 && value[0].isNum() && value[1].isNum()) {
|
||||
int64_t low = value[0].get_int64();
|
||||
int64_t high = value[1].get_int64();
|
||||
if (low > high) throw JSONRPCError(RPC_INVALID_PARAMETER, "Range specified as [begin,end] must not have begin after end");
|
||||
return {low, high};
|
||||
}
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Range must be specified as end or as [begin,end]");
|
||||
}
|
||||
|
|
|
@ -38,6 +38,9 @@ unsigned int ParseConfirmTarget(const UniValue& value);
|
|||
RPCErrorCode RPCErrorFromTransactionError(TransactionError terr);
|
||||
UniValue JSONRPCTransactionError(TransactionError terr, const std::string& err_string = "");
|
||||
|
||||
//! Parse a JSON range specified as int64, or [int64, int64]
|
||||
std::pair<int64_t, int64_t> ParseRange(const UniValue& value);
|
||||
|
||||
struct RPCArg {
|
||||
enum class Type {
|
||||
OBJ,
|
||||
|
|
Loading…
Reference in a new issue