Fixes #626
This commit is contained in:
cyan317
2023-05-05 12:55:14 +01:00
committed by GitHub
parent d7d5d61747
commit 6bc2ec745f
8 changed files with 36 additions and 22 deletions

View File

@@ -90,6 +90,9 @@ AccountChannelsHandler::process(AccountChannelsHandler::Input input, Context con
auto const next = ngTraverseOwnedNodes( auto const next = ngTraverseOwnedNodes(
*sharedPtrBackend_, *accountID, lgrInfo.seq, input.limit, input.marker, ctx.yield, addToResponse); *sharedPtrBackend_, *accountID, lgrInfo.seq, input.limit, input.marker, ctx.yield, addToResponse);
if (auto status = std::get_if<Status>(&next))
return Error{*status};
response.account = input.account; response.account = input.account;
response.limit = input.limit; response.limit = input.limit;
response.ledgerHash = ripple::strHex(lgrInfo.hash); response.ledgerHash = ripple::strHex(lgrInfo.hash);

View File

@@ -132,6 +132,10 @@ AccountLinesHandler::process(AccountLinesHandler::Input input, Context const& ct
auto const next = ngTraverseOwnedNodes( auto const next = ngTraverseOwnedNodes(
*sharedPtrBackend_, *accountID, lgrInfo.seq, input.limit, input.marker, ctx.yield, addToResponse); *sharedPtrBackend_, *accountID, lgrInfo.seq, input.limit, input.marker, ctx.yield, addToResponse);
if (auto status = std::get_if<Status>(&next))
return Error{*status};
auto const nextMarker = std::get<AccountCursor>(next); auto const nextMarker = std::get<AccountCursor>(next);
response.account = input.account; response.account = input.account;
@@ -183,6 +187,7 @@ void
tag_invoke(boost::json::value_from_tag, boost::json::value& jv, AccountLinesHandler::Output const& output) tag_invoke(boost::json::value_from_tag, boost::json::value& jv, AccountLinesHandler::Output const& output)
{ {
auto obj = boost::json::object{ auto obj = boost::json::object{
{JS(account), output.account},
{JS(ledger_hash), output.ledgerHash}, {JS(ledger_hash), output.ledgerHash},
{JS(ledger_index), output.ledgerIndex}, {JS(ledger_index), output.ledgerIndex},
{JS(validated), output.validated}, {JS(validated), output.validated},

View File

@@ -60,6 +60,7 @@ void
tag_invoke(boost::json::value_from_tag, boost::json::value& jv, TransactionEntryHandler::Output const& output) tag_invoke(boost::json::value_from_tag, boost::json::value& jv, TransactionEntryHandler::Output const& output)
{ {
jv = { jv = {
{JS(validated), output.validated},
{JS(metadata), output.metadata}, {JS(metadata), output.metadata},
{JS(tx_json), output.tx}, {JS(tx_json), output.tx},
{JS(ledger_index), output.ledgerIndex}, {JS(ledger_index), output.ledgerIndex},

View File

@@ -17,7 +17,6 @@
*/ */
//============================================================================== //==============================================================================
#include <rpc/RPCHelpers.h>
#include <rpc/handlers/Tx.h> #include <rpc/handlers/Tx.h>
namespace RPC { namespace RPC {
@@ -84,17 +83,17 @@ tag_invoke(boost::json::value_from_tag, boost::json::value& jv, TxHandler::Outpu
if (output.tx) if (output.tx)
{ {
obj = *output.tx; obj = *output.tx;
obj["meta"] = *output.meta; obj[JS(meta)] = *output.meta;
} }
else else
{ {
obj["meta"] = *output.metaStr; obj[JS(meta)] = *output.metaStr;
obj["tx"] = *output.txStr; obj[JS(tx)] = *output.txStr;
obj["hash"] = output.hash; obj[JS(hash)] = output.hash;
} }
obj[JS(validated)] = output.validated;
obj["date"] = output.date; obj[JS(date)] = output.date;
obj["ledger_index"] = output.ledgerIndex; obj[JS(ledger_index)] = output.ledgerIndex;
jv = std::move(obj); jv = std::move(obj);
} }
@@ -105,16 +104,16 @@ tag_invoke(boost::json::value_to_tag<TxHandler::Input>, boost::json::value const
auto input = TxHandler::Input{}; auto input = TxHandler::Input{};
auto const& jsonObject = jv.as_object(); auto const& jsonObject = jv.as_object();
input.transaction = jv.at("transaction").as_string().c_str(); input.transaction = jv.at(JS(transaction)).as_string().c_str();
if (jsonObject.contains("binary")) if (jsonObject.contains(JS(binary)))
input.binary = jv.at("binary").as_bool(); input.binary = jv.at(JS(binary)).as_bool();
if (jsonObject.contains("min_ledger")) if (jsonObject.contains(JS(min_ledger)))
input.minLedger = jv.at("min_ledger").as_int64(); input.minLedger = jv.at(JS(min_ledger)).as_int64();
if (jsonObject.contains("max_ledger")) if (jsonObject.contains(JS(max_ledger)))
input.maxLedger = jv.at("max_ledger").as_int64(); input.maxLedger = jv.at(JS(max_ledger)).as_int64();
return input; return input;
} }

View File

@@ -20,6 +20,7 @@
#pragma once #pragma once
#include <backend/BackendInterface.h> #include <backend/BackendInterface.h>
#include <rpc/RPCHelpers.h>
#include <rpc/common/Types.h> #include <rpc/common/Types.h>
#include <rpc/common/Validators.h> #include <rpc/common/Validators.h>
@@ -60,10 +61,10 @@ public:
spec() const spec() const
{ {
static const RpcSpec rpcSpec = { static const RpcSpec rpcSpec = {
{"transaction", validation::Required{}, validation::Uint256HexStringValidator}, {JS(transaction), validation::Required{}, validation::Uint256HexStringValidator},
{"binary", validation::Type<bool>{}}, {JS(binary), validation::Type<bool>{}},
{"min_ledger", validation::Type<uint32_t>{}}, {JS(min_ledger), validation::Type<uint32_t>{}},
{"max_ledger", validation::Type<uint32_t>{}}, {JS(max_ledger), validation::Type<uint32_t>{}},
}; };
return rpcSpec; return rpcSpec;

View File

@@ -429,6 +429,7 @@ TEST_F(RPCAccountLinesHandlerTest, DefaultParameterTest)
ACCOUNT)); ACCOUNT));
auto const correctOutput = auto const correctOutput =
R"({ R"({
"account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
"ledger_hash": "4BC50C9B0D8515D3EAAE1E74B29A95804346C491EE1A95BF25E4AAB854A6A652", "ledger_hash": "4BC50C9B0D8515D3EAAE1E74B29A95804346C491EE1A95BF25E4AAB854A6A652",
"ledger_index": 30, "ledger_index": 30,
"validated": true, "validated": true,
@@ -624,6 +625,7 @@ TEST_F(RPCAccountLinesHandlerTest, EmptyChannel)
TEST_F(RPCAccountLinesHandlerTest, OptionalResponseField) TEST_F(RPCAccountLinesHandlerTest, OptionalResponseField)
{ {
constexpr static auto correctOutput = R"({ constexpr static auto correctOutput = R"({
"account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
"ledger_hash": "4BC50C9B0D8515D3EAAE1E74B29A95804346C491EE1A95BF25E4AAB854A6A652", "ledger_hash": "4BC50C9B0D8515D3EAAE1E74B29A95804346C491EE1A95BF25E4AAB854A6A652",
"ledger_index": 30, "ledger_index": 30,
"validated": true, "validated": true,

View File

@@ -213,7 +213,8 @@ TEST_F(RPCTransactionEntryHandlerTest, NormalPath)
"hash":"2E2FBAAFF767227FE4381C4BE9855986A6B9F96C62F6E443731AB36F7BBB8A08" "hash":"2E2FBAAFF767227FE4381C4BE9855986A6B9F96C62F6E443731AB36F7BBB8A08"
}, },
"ledger_index":30, "ledger_index":30,
"ledger_hash":"E6DBAFC99223B42257915A63DFC6B0C032D4070F9A574B255AD97466726FC322" "ledger_hash":"E6DBAFC99223B42257915A63DFC6B0C032D4070F9A574B255AD97466726FC322",
"validated":true
})"; })";
auto const rawBackendPtr = static_cast<MockBackend*>(mockBackendPtr.get()); auto const rawBackendPtr = static_cast<MockBackend*>(mockBackendPtr.get());
TransactionAndMetadata tx; TransactionAndMetadata tx;

View File

@@ -193,7 +193,8 @@ TEST_F(RPCTxTest, DefaultParameter)
"TransactionResult":"tesSUCCESS" "TransactionResult":"tesSUCCESS"
}, },
"date":123456, "date":123456,
"ledger_index":100 "ledger_index":100,
"validated": true
})"; })";
auto const rawBackendPtr = static_cast<MockBackend*>(mockBackendPtr.get()); auto const rawBackendPtr = static_cast<MockBackend*>(mockBackendPtr.get());
TransactionAndMetadata tx; TransactionAndMetadata tx;
@@ -225,7 +226,8 @@ TEST_F(RPCTxTest, ReturnBinary)
"tx":"120007240000006464400000000000012C65D5071AFD498D00000158415500000000C1F76FF6ECB0BAC600000000D31252CF902EF8DD8451243869B38667CBD89DF368400000000000000273047465737481144B4E9C06F24296074F7BC48F92A97916C6DC5EA9", "tx":"120007240000006464400000000000012C65D5071AFD498D00000158415500000000C1F76FF6ECB0BAC600000000D31252CF902EF8DD8451243869B38667CBD89DF368400000000000000273047465737481144B4E9C06F24296074F7BC48F92A97916C6DC5EA9",
"hash":"05FB0EB4B899F056FA095537C5817163801F544BAFCEA39C995D76DB4D16F9DD", "hash":"05FB0EB4B899F056FA095537C5817163801F544BAFCEA39C995D76DB4D16F9DD",
"date":123456, "date":123456,
"ledger_index":100 "ledger_index":100,
"validated": true
})"; })";
auto const rawBackendPtr = static_cast<MockBackend*>(mockBackendPtr.get()); auto const rawBackendPtr = static_cast<MockBackend*>(mockBackendPtr.get());
TransactionAndMetadata tx; TransactionAndMetadata tx;