diff --git a/src/WSDoor.cpp b/src/WSDoor.cpp index 7e6960b831..5eca83fb2d 100644 --- a/src/WSDoor.cpp +++ b/src/WSDoor.cpp @@ -609,10 +609,13 @@ void WSConnection::doLedgerEntry(Json::Value& jvResult, const Json::Value& jvReq jvResult["ledger_index"] = uLedgerIndex; uint256 uNodeIndex; + bool bNodeBinary = false; if (jvRequest.isMember("index")) { - jvResult["error"] = "notImplemented"; + // XXX Needs to provide proof. + uNodeIndex.SetHex(jvRequest["index"].asString()); + bNodeBinary = true; } else if (jvRequest.isMember("account_root")) { @@ -675,12 +678,21 @@ void WSConnection::doLedgerEntry(Json::Value& jvResult, const Json::Value& jvReq if (!sleNode) { // Not found. - // XXX We should also provide proof. - jvResult["error"] = "entryNotFound"; + // XXX Should also provide proof. + jvResult["error"] = "entryNotFound"; + } + else if (bNodeBinary) + { + // XXX Should also provide proof. + Serializer s; + + sleNode->add(s); + + jvResult["node_binary"] = strHex(s.peekData()); } else { - jvResult["node"] = sleNode->getJson(0); + jvResult["node"] = sleNode->getJson(0); } } } diff --git a/test/standalone-test.js b/test/standalone-test.js index a3fb947498..6a18592a42 100644 --- a/test/standalone-test.js +++ b/test/standalone-test.js @@ -163,6 +163,26 @@ buster.testCase("Websocket commands", { }); }); }, + + 'ledger_entry index' : + function(done) { + alpha.ledger_closed(function (r) { + // console.log("result: %s", JSON.stringify(r)); + + buster.refute('error' in r); + + alpha.ledger_entry({ + 'ledger_index' : r.ledger_index, + 'index' : "2B6AC232AA4C4BE41BF49D2459FA4A0347E1B543A4C92FCEE0821C0201E2E9A8", + } , function (r) { + console.log("node: %s", JSON.stringify(r)); + + buster.assert('node_binary' in r); + done(); + }); + }); + }, + }); // vim:ts=4