From 96ece1b9f01a305ed5a3deae25bbe1b6f4a7f4cf Mon Sep 17 00:00:00 2001 From: Edward Hennis Date: Thu, 6 Apr 2017 13:28:09 -0400 Subject: [PATCH] Fix levelization * Move `chooseLedgerEntryType` from protocol to RPC --- src/ripple/protocol/LedgerFormats.h | 4 -- src/ripple/protocol/impl/LedgerFormats.cpp | 49 +------------------ src/ripple/rpc/handlers/AccountObjects.cpp | 2 +- src/ripple/rpc/handlers/LedgerData.cpp | 2 +- src/ripple/rpc/impl/RPCHelpers.cpp | 55 ++++++++++++++++++++-- src/ripple/rpc/impl/RPCHelpers.h | 3 ++ 6 files changed, 58 insertions(+), 57 deletions(-) diff --git a/src/ripple/protocol/LedgerFormats.h b/src/ripple/protocol/LedgerFormats.h index a80d5d944..d7bb895ea 100644 --- a/src/ripple/protocol/LedgerFormats.h +++ b/src/ripple/protocol/LedgerFormats.h @@ -21,7 +21,6 @@ #define RIPPLE_PROTOCOL_LEDGERFORMATS_H_INCLUDED #include -#include namespace ripple { @@ -164,9 +163,6 @@ private: void addCommonFields (Item& item); }; -std::pair - chooseLedgerEntryType(Json::Value const& params); - } // ripple #endif diff --git a/src/ripple/protocol/impl/LedgerFormats.cpp b/src/ripple/protocol/impl/LedgerFormats.cpp index e689d85f8..d900906c8 100644 --- a/src/ripple/protocol/impl/LedgerFormats.cpp +++ b/src/ripple/protocol/impl/LedgerFormats.cpp @@ -18,9 +18,9 @@ //============================================================================== #include +#include #include #include -#include #include #include #include @@ -170,51 +170,4 @@ LedgerFormats::getInstance () return instance; } -std::pair -chooseLedgerEntryType(Json::Value const& params) -{ - std::pair result{RPC::Status::OK, ltINVALID}; - if (params.isMember(jss::type)) - { - static - std::array, 11> const types - {{ - { jss::account, ltACCOUNT_ROOT }, - { jss::amendments, ltAMENDMENTS }, - { jss::directory, ltDIR_NODE }, - { jss::fee, ltFEE_SETTINGS }, - { jss::hashes, ltLEDGER_HASHES }, - { jss::offer, ltOFFER }, - { jss::signer_list, ltSIGNER_LIST }, - { jss::state, ltRIPPLE_STATE }, - { jss::ticket, ltTICKET }, - { jss::escrow, ltESCROW }, - { jss::payment_channel, ltPAYCHAN } - }}; - - auto const& p = params[jss::type]; - if (!p.isString()) - { - result.first = RPC::Status{rpcINVALID_PARAMS, - "Invalid field 'type', not string."}; - assert(result.first.type() == RPC::Status::Type::error_code_i); - return result; - } - - auto const filter = p.asString (); - auto iter = std::find_if (types.begin (), types.end (), - [&filter](decltype (types.front ())& t) - { return t.first == filter; }); - if (iter == types.end ()) - { - result.first = RPC::Status{rpcINVALID_PARAMS, - "Invalid field 'type'."}; - assert(result.first.type() == RPC::Status::Type::error_code_i); - return result; - } - result.second = iter->second; - } - return result; -} - } // ripple diff --git a/src/ripple/rpc/handlers/AccountObjects.cpp b/src/ripple/rpc/handlers/AccountObjects.cpp index a1931a083..21d8b92e2 100644 --- a/src/ripple/rpc/handlers/AccountObjects.cpp +++ b/src/ripple/rpc/handlers/AccountObjects.cpp @@ -73,7 +73,7 @@ Json::Value doAccountObjects (RPC::Context& context) if (! ledger->exists(keylet::account (accountID))) return rpcError (rpcACT_NOT_FOUND); - auto type = chooseLedgerEntryType(params); + auto type = RPC::chooseLedgerEntryType(params); if (type.first) { result.clear(); diff --git a/src/ripple/rpc/handlers/LedgerData.cpp b/src/ripple/rpc/handlers/LedgerData.cpp index 9cb0a8fbc..9b418a969 100644 --- a/src/ripple/rpc/handlers/LedgerData.cpp +++ b/src/ripple/rpc/handlers/LedgerData.cpp @@ -86,7 +86,7 @@ Json::Value doLedgerData (RPC::Context& context) LedgerFill::Options::binary : 0)); } - auto type = chooseLedgerEntryType(params); + auto type = RPC::chooseLedgerEntryType(params); if (type.first) { jvResult.clear(); diff --git a/src/ripple/rpc/impl/RPCHelpers.cpp b/src/ripple/rpc/impl/RPCHelpers.cpp index 05af0aa72..6ca2e88f6 100644 --- a/src/ripple/rpc/impl/RPCHelpers.cpp +++ b/src/ripple/rpc/impl/RPCHelpers.cpp @@ -664,9 +664,58 @@ keypairForSignature(Json::Value const& params, Json::Value& error) return generateKeyPair (keyType, *seed); } -beast::SemanticVersion const firstVersion ("1.0.0"); -beast::SemanticVersion const goodVersion ("1.0.0"); -beast::SemanticVersion const lastVersion ("1.0.0"); +std::pair +chooseLedgerEntryType(Json::Value const& params) +{ + std::pair result{ RPC::Status::OK, ltINVALID }; + if (params.isMember(jss::type)) + { + static + std::array, 11> const types + { { + { jss::account, ltACCOUNT_ROOT }, + { jss::amendments, ltAMENDMENTS }, + { jss::directory, ltDIR_NODE }, + { jss::fee, ltFEE_SETTINGS }, + { jss::hashes, ltLEDGER_HASHES }, + { jss::offer, ltOFFER }, + { jss::signer_list, ltSIGNER_LIST }, + { jss::state, ltRIPPLE_STATE }, + { jss::ticket, ltTICKET }, + { jss::escrow, ltESCROW }, + { jss::payment_channel, ltPAYCHAN } + } }; + + auto const& p = params[jss::type]; + if (!p.isString()) + { + result.first = RPC::Status{ rpcINVALID_PARAMS, + "Invalid field 'type', not string." }; + assert(result.first.type() == RPC::Status::Type::error_code_i); + return result; + } + + auto const filter = p.asString(); + auto iter = std::find_if(types.begin(), types.end(), + [&filter](decltype (types.front())& t) + { + return t.first == filter; + }); + if (iter == types.end()) + { + result.first = RPC::Status{ rpcINVALID_PARAMS, + "Invalid field 'type'." }; + assert(result.first.type() == RPC::Status::Type::error_code_i); + return result; + } + result.second = iter->second; + } + return result; +} + +beast::SemanticVersion const firstVersion("1.0.0"); +beast::SemanticVersion const goodVersion("1.0.0"); +beast::SemanticVersion const lastVersion("1.0.0"); } // RPC } // ripple diff --git a/src/ripple/rpc/impl/RPCHelpers.h b/src/ripple/rpc/impl/RPCHelpers.h index 8382d1481..11471faf5 100644 --- a/src/ripple/rpc/impl/RPCHelpers.h +++ b/src/ripple/rpc/impl/RPCHelpers.h @@ -129,6 +129,9 @@ setVersion(Object& parent) object[jss::last] = lastVersion.print(); } +std::pair + chooseLedgerEntryType(Json::Value const& params); + } // RPC } // ripple