20 #include <ripple/app/main/Application.h>
21 #include <ripple/basics/strHex.h>
22 #include <ripple/basics/StringUtilities.h>
23 #include <ripple/ledger/ReadView.h>
24 #include <ripple/net/RPCErr.h>
25 #include <ripple/protocol/ErrorCodes.h>
26 #include <ripple/protocol/Indexes.h>
27 #include <ripple/protocol/jss.h>
28 #include <ripple/rpc/Context.h>
29 #include <ripple/rpc/impl/RPCHelpers.h>
47 bool bNodeBinary =
false;
57 auto const account = parseBase58<AccountID>(
59 if (! account || account->
isZero())
60 jvResult[jss::error] =
"malformedAddress";
79 uNodeIndex = beast::zero;
80 jvResult[jss::error] =
"malformedRequest";
83 else if (!context.
params[jss::deposit_preauth].
isMember (jss::owner)
85 || !context.
params[jss::deposit_preauth].
isMember (jss::authorized)
86 || !context.
params[jss::deposit_preauth][jss::authorized].
isString())
88 jvResult[jss::error] =
"malformedRequest";
92 auto const owner = parseBase58<AccountID>(context.
params[
93 jss::deposit_preauth][jss::owner].
asString());
96 jss::deposit_preauth][jss::authorized].
asString());
99 jvResult[jss::error] =
"malformedOwner";
101 jvResult[jss::error] =
"malformedAuthorized";
111 jvResult[jss::error] =
"malformedRequest";
120 jvResult[jss::error] =
"malformedRequest";
126 ? context.
params[jss::directory][jss::sub_index].
asUInt () : 0;
133 jvResult[jss::error] =
"malformedRequest";
146 auto const ownerID = parseBase58<AccountID>(
151 jvResult[jss::error] =
"malformedAddress";
161 jvResult[jss::error] =
"malformedRequest";
176 jvResult[jss::error] =
"malformedRequest";
180 auto const id = parseBase58<AccountID>(
183 jvResult[jss::error] =
"malformedOwner";
200 jvResult[jss::error] =
"malformedRequest";
204 auto const id = parseBase58<AccountID>(
207 jvResult[jss::error] =
"malformedAddress";
225 || !jvRippleState.
isMember (jss::currency)
226 || !jvRippleState.
isMember (jss::accounts)
227 || !jvRippleState[jss::accounts].
isArray()
228 || 2 != jvRippleState[jss::accounts].
size ()
229 || !jvRippleState[jss::accounts][0u].
isString ()
230 || !jvRippleState[jss::accounts][1u].
isString ()
231 || (jvRippleState[jss::accounts][0u].
asString ()
232 == jvRippleState[jss::accounts][1u].
asString ())
235 jvResult[jss::error] =
"malformedRequest";
239 auto const id1 = parseBase58<AccountID>(
240 jvRippleState[jss::accounts][0u].asString());
241 auto const id2 = parseBase58<AccountID>(
242 jvRippleState[jss::accounts][1u].asString());
245 jvResult[jss::error] =
"malformedAddress";
248 jvRippleState[jss::currency].asString()))
250 jvResult[jss::error] =
"malformedCurrency";
255 *id1, *id2, uCurrency);
261 jvResult[jss::error] =
"unknownOption";
273 jvResult[jss::error] =
"entryNotFound";
275 else if ((expectedType !=
ltANY) &&
276 (expectedType != sleNode->getType()))
278 jvResult[jss::error] =
"malformedRequest";
280 else if (bNodeBinary)
287 jvResult[jss::index] =
to_string (uNodeIndex);
292 jvResult[jss::index] =
to_string (uNodeIndex);