Make RPC book_offers usuable.

- Missing: transfer fees
- Adds taker support
- Adds taker_gets_funded and taker_pays_funded
- Adds don't return unfunded offers
- Adds follow offer owner balances.
This commit is contained in:
Arthur Britto
2013-03-02 23:55:45 -08:00
parent f340a636cb
commit 768007cee6
7 changed files with 103 additions and 24 deletions

View File

@@ -1022,10 +1022,11 @@ Json::Value RPCHandler::doAccountOffers(Json::Value jvRequest)
}
// {
// "ledger_hash" : ledger, // Optional
// "ledger_index" : ledger_index, // Optional
// "ledger_hash" : ledger, // Optional.
// "ledger_index" : ledger_index, // Optional.
// "taker_gets" : { "currency": currency, "issuer" : address },
// "taker_pays" : { "currency": currency, "issuer" : address },
// "taker" : address, // Optional.
// "marker" : element, // Optional.
// "limit" : integer, // Optional.
// "proof" : boolean // Defaults to false.
@@ -1100,11 +1101,22 @@ Json::Value RPCHandler::doBookOffers(Json::Value jvRequest)
return rpcError(rpcBAD_MARKET);
}
RippleAddress raTakerID;
if (!jvRequest.isMember("taker"))
{
raTakerID.setAccountID(ACCOUNT_ONE);
}
else if (!raTakerID.setAccountID(jvRequest["taker"].asString()))
{
return rpcError(rpcBAD_ISSUER);
}
const bool bProof = jvRequest.isMember("proof");
const unsigned int iLimit = jvRequest.isMember("limit") ? jvRequest["limit"].asUInt() : 0;
const Json::Value jvMarker = jvRequest.isMember("marker") ? jvRequest["marker"] : Json::Value(Json::nullValue);
mNetOps->getBookPage(lpLedger, uTakerPaysCurrencyID, uTakerPaysIssuerID, uTakerGetsCurrencyID, uTakerGetsIssuerID, bProof, iLimit, jvMarker, jvResult);
mNetOps->getBookPage(lpLedger, uTakerPaysCurrencyID, uTakerPaysIssuerID, uTakerGetsCurrencyID, uTakerGetsIssuerID, raTakerID.getAccountID(), bProof, iLimit, jvMarker, jvResult);
return jvResult;
}