Refactor RPC ripple_lines_get.

This commit is contained in:
Arthur Britto
2012-12-03 15:55:10 -08:00
parent e8f2efab93
commit 125a1ae5d3
4 changed files with 53 additions and 27 deletions

View File

@@ -156,6 +156,26 @@ Json::Value RPCParser::parseLedger(const Json::Value& jvParams)
return jvRequest; return jvRequest;
} }
// ripple_lines_get <account>|<nickname>|<account_public_key> [<index>]
Json::Value RPCParser::parseRippleLinesGet(const Json::Value& jvParams)
{
std::string strIdent = jvParams[0u].asString();
bool bIndex = 2 == jvParams.size();
int iIndex = bIndex ? lexical_cast_s<int>(jvParams[1u].asString()) : 0;
if (bIndex && !iIndex) // Don't send default.
bIndex = false;
// Get info on account.
Json::Value jvRequest(Json::objectValue);
jvRequest["account"] = strIdent;
if (bIndex)
jvRequest["index"] = iIndex;
return jvRequest;
}
// submit any transaction to the network // submit any transaction to the network
// submit private_key json // submit private_key json
Json::Value RPCParser::parseSubmit(const Json::Value& jvParams) Json::Value RPCParser::parseSubmit(const Json::Value& jvParams)
@@ -248,7 +268,7 @@ Json::Value RPCParser::parseCommand(std::string strMethod, Json::Value jvParams)
// { "owner_info", &RPCParser::doOwnerInfo, 1, 2, false, false, optCurrent }, // { "owner_info", &RPCParser::doOwnerInfo, 1, 2, false, false, optCurrent },
{ "peers", &RPCParser::parseAsIs, 0, 0 }, { "peers", &RPCParser::parseAsIs, 0, 0 },
// { "profile", &RPCParser::doProfile, 1, 9, false, false, optCurrent }, // { "profile", &RPCParser::doProfile, 1, 9, false, false, optCurrent },
// { "ripple_lines_get", &RPCParser::doRippleLinesGet, 1, 2, false, false, optCurrent }, { "ripple_lines_get", &RPCParser::parseRippleLinesGet, 1, 2 },
// { "ripple_path_find", &RPCParser::doRipplePathFind, -1, -1, false, false, optCurrent }, // { "ripple_path_find", &RPCParser::doRipplePathFind, -1, -1, false, false, optCurrent },
{ "submit", &RPCParser::parseSubmit, 2, 2 }, { "submit", &RPCParser::parseSubmit, 2, 2 },
{ "server_info", &RPCParser::parseAsIs, 0, 0 }, { "server_info", &RPCParser::parseAsIs, 0, 0 },

View File

@@ -17,6 +17,7 @@ protected:
Json::Value parseConnect(const Json::Value& jvParams); Json::Value parseConnect(const Json::Value& jvParams);
Json::Value parseEvented(const Json::Value& jvParams); Json::Value parseEvented(const Json::Value& jvParams);
Json::Value parseLedger(const Json::Value& jvParams); Json::Value parseLedger(const Json::Value& jvParams);
Json::Value parseRippleLinesGet(const Json::Value& jvParams);
Json::Value parseSubmit(const Json::Value& jvParams); Json::Value parseSubmit(const Json::Value& jvParams);
Json::Value parseUnlAdd(const Json::Value& jvParams); Json::Value parseUnlAdd(const Json::Value& jvParams);
Json::Value parseUnlDelete(const Json::Value& jvParams); Json::Value parseUnlDelete(const Json::Value& jvParams);

View File

@@ -549,42 +549,42 @@ Json::Value RPCHandler::doProfile(Json::Value params)
return obj; return obj;
} }
// ripple_lines_get <account>|<nickname>|<account_public_key> [<index>] // {
Json::Value RPCHandler::doRippleLinesGet(Json::Value params) // account: <account>|<nickname>|<account_public_key> [<index>]
// index: <number> // optional, defaults to 0.
// }
Json::Value RPCHandler::doRippleLinesGet(Json::Value jvRequest)
{ {
// uint256 uAccepted = mNetOps->getClosedLedgerHash(); std::string strIdent = jvRequest["account"].asString();
bool bIndex = jvRequest.isMember("index");
int iIndex = bIndex ? jvRequest["index"].asUInt() : 0;
std::string strIdent = params[0u].asString(); RippleAddress raAccount;
bool bIndex;
int iIndex = 2 == params.size() ? lexical_cast_s<int>(params[1u].asString()) : 0;
RippleAddress naAccount; Json::Value jvResult;
Json::Value ret; jvResult = accountFromString(uint256(0), raAccount, bIndex, strIdent, iIndex);
ret = accountFromString(uint256(0), naAccount, bIndex, strIdent, iIndex); if (!jvResult.empty())
return jvResult;
if (!ret.empty())
return ret;
// Get info on account. // Get info on account.
ret = Json::Value(Json::objectValue);
ret["account"] = naAccount.humanAccountID(); jvResult["account"] = raAccount.humanAccountID();
if (bIndex) if (bIndex)
ret["index"] = iIndex; jvResult["index"] = iIndex;
AccountState::pointer as = mNetOps->getAccountState(uint256(0), naAccount); AccountState::pointer as = mNetOps->getAccountState(uint256(0), raAccount);
if (as) if (as)
{ {
Json::Value jsonLines(Json::arrayValue); Json::Value jsonLines(Json::arrayValue);
ret["account"] = naAccount.humanAccountID(); jvResult["account"] = raAccount.humanAccountID();
// XXX This is wrong, we do access the current ledger and do need to worry about changes. // XXX This is wrong, we do access the current ledger and do need to worry about changes.
// We access a committed ledger and need not worry about changes. // We access a committed ledger and need not worry about changes.
RippleLines rippleLines(naAccount.getAccountID()); RippleLines rippleLines(raAccount.getAccountID());
BOOST_FOREACH(RippleState::pointer line, rippleLines.getLines()) BOOST_FOREACH(RippleState::pointer line, rippleLines.getLines())
{ {
STAmount saBalance = line->getBalance(); STAmount saBalance = line->getBalance();
@@ -607,14 +607,14 @@ Json::Value RPCHandler::doRippleLinesGet(Json::Value params)
jsonLines.append(jPeer); jsonLines.append(jPeer);
} }
ret["lines"] = jsonLines; jvResult["lines"] = jsonLines;
} }
else else
{ {
ret = rpcError(rpcACT_NOT_FOUND); jvResult = rpcError(rpcACT_NOT_FOUND);
} }
return ret; return jvResult;
} }
// TODO: // TODO:

View File

@@ -698,14 +698,16 @@ Remote.prototype.request_transaction_entry = function (hash) {
.tx_hash(hash); .tx_hash(hash);
}; };
Remote.prototype.request_ripple_lines_get = function (accountID) { Remote.prototype.request_ripple_lines_get = function (accountID, index) {
// XXX Does this require the server to be trusted? // XXX Does this require the server to be trusted?
//assert(this.trusted); //assert(this.trusted);
var request = new Request(this, 'ripple_lines_get'); var request = new Request(this, 'ripple_lines_get');
// XXX Convert API call to JSON request.message.account = accountID;
request.message.params = [accountID];
if (index)
request.message.index = index;
return request; return request;
}; };
@@ -1001,10 +1003,13 @@ Remote.prototype.request_unl_list = function () {
return new Request(this, 'unl_list'); return new Request(this, 'unl_list');
}; };
Remote.prototype.request_unl_add = function (addr, note) { Remote.prototype.request_unl_add = function (addr, comment) {
var request = new Request(this, 'unl_add'); var request = new Request(this, 'unl_add');
request.message.params = [addr, note]; request.message.node = addr;
if (comment !== undefined)
request.message.comment = note;
return request; return request;
}; };