diff --git a/rai/core_test/rpc.cpp b/rai/core_test/rpc.cpp index 0c646268..9784e748 100644 --- a/rai/core_test/rpc.cpp +++ b/rai/core_test/rpc.cpp @@ -97,6 +97,24 @@ TEST (rpc, account_balance) ASSERT_EQ ("0", pending_text); } +TEST (rpc, account_block_count) +{ + rai::system system (24000, 1); + rai::rpc rpc (system.service, *system.nodes [0], rai::rpc_config (true)); + rpc.start (); + boost::property_tree::ptree request; + request.put ("action", "account_block_count"); + request.put ("account", rai::test_genesis_key.pub.to_account ()); + test_response response (request, rpc, system.service); + while (response.status == 0) + { + system.poll (); + } + ASSERT_EQ (200, response.status); + std::string block_count_text (response.json.get ("block_count")); + ASSERT_EQ ("1", block_count_text); +} + TEST (rpc, account_create) { rai::system system (24000, 1); diff --git a/rai/node/rpc.cpp b/rai/node/rpc.cpp index 9cc6e898..2b8098bc 100755 --- a/rai/node/rpc.cpp +++ b/rai/node/rpc.cpp @@ -180,6 +180,32 @@ void rai::rpc_handler::account_balance () } } +void rai::rpc_handler::account_block_count () +{ + std::string account_text (request.get ("account")); + rai::uint256_union account; + auto error (account.decode_account (account_text)); + if (!error) + { + rai::transaction transaction (node.store.environment, nullptr, false); + rai::account_info info; + if (!node.store.account_get (transaction, account, info)) + { + boost::property_tree::ptree response_l; + response_l.put ("block_count", std::to_string (info.block_count)); + response (response_l); + } + else + { + error_response (response, "Account not found"); + } + } + else + { + error_response (response, "Bad account number"); + } +} + void rai::rpc_handler::account_create () { if (rpc.config.enable_control) @@ -1794,6 +1820,10 @@ void rai::rpc_handler::process_request () { account_balance (); } + else if (action == "account_block_count") + { + account_block_count (); + } else if (action == "account_create") { account_create (); diff --git a/rai/node/rpc.hpp b/rai/node/rpc.hpp index e3cf2a45..546db77b 100644 --- a/rai/node/rpc.hpp +++ b/rai/node/rpc.hpp @@ -89,6 +89,7 @@ public: rpc_handler (rai::node &, rai::rpc &, std::string const &, std::function const &); void process_request (); void account_balance (); + void account_block_count (); void account_create (); void account_get (); void account_key ();