Adding wallet_export rpc.
This commit is contained in:
parent
ce00533dcd
commit
8b0a2d934f
2 changed files with 55 additions and 0 deletions
|
@ -2378,6 +2378,34 @@ void rai::rpc::operator () (boost::network::http::server <rai::rpc>::request con
|
|||
response_l.put ("wallet", wallet_id.prv.to_string ());
|
||||
set_response (response, response_l);
|
||||
}
|
||||
else if (action == "wallet_export")
|
||||
{
|
||||
std::string wallet_text (request_l.get <std::string> ("wallet"));
|
||||
rai::uint256_union wallet;
|
||||
auto error (wallet.decode_hex (wallet_text));
|
||||
if (!error)
|
||||
{
|
||||
auto existing (client.wallets.items.find (wallet));
|
||||
if (existing != client.wallets.items.end ())
|
||||
{
|
||||
std::string json;
|
||||
existing->second->store.serialize_json (json);
|
||||
boost::property_tree::ptree response_l;
|
||||
response_l.put ("json", json);
|
||||
set_response (response, response_l);
|
||||
}
|
||||
else
|
||||
{
|
||||
response = boost::network::http::server<rai::rpc>::response::stock_reply (boost::network::http::server<rai::rpc>::response::bad_request);
|
||||
response.content = "Wallet not found";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
response = boost::network::http::server<rai::rpc>::response::stock_reply (boost::network::http::server<rai::rpc>::response::bad_request);
|
||||
response.content = "Bad account number";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
response = boost::network::http::server<rai::rpc>::response::stock_reply (boost::network::http::server<rai::rpc>::response::bad_request);
|
||||
|
|
|
@ -982,6 +982,33 @@ TEST (rpc, wallet_create)
|
|||
ASSERT_NE (system.clients [0]->wallets.items.end (), system.clients [0]->wallets.items.find (wallet_id));
|
||||
}
|
||||
|
||||
TEST (rpc, wallet_export)
|
||||
{
|
||||
rai::system system (24000, 1);
|
||||
auto pool (boost::make_shared <boost::network::utils::thread_pool> ());
|
||||
rai::rpc rpc (system.service, pool, boost::asio::ip::address_v6::loopback (), 25000, *system.clients [0], true);
|
||||
system.wallet (0)->store.insert (rai::test_genesis_key.prv);
|
||||
boost::network::http::server <rai::rpc>::request request;
|
||||
boost::network::http::server <rai::rpc>::response response;
|
||||
request.method = "POST";
|
||||
boost::property_tree::ptree request_tree;
|
||||
request_tree.put ("action", "wallet_export");
|
||||
request_tree.put ("wallet", system.clients [0]->wallets.items.begin ()->first.to_string ());
|
||||
std::stringstream ostream;
|
||||
boost::property_tree::write_json (ostream, request_tree);
|
||||
request.body = ostream.str ();
|
||||
rpc (request, response);
|
||||
ASSERT_EQ (boost::network::http::server <rai::rpc>::response::ok, response.status);
|
||||
boost::property_tree::ptree response_tree;
|
||||
std::stringstream istream (response.content);
|
||||
boost::property_tree::read_json (istream, response_tree);
|
||||
std::string wallet_json (response_tree.get <std::string> ("json"));
|
||||
bool error (false);
|
||||
rai::wallet_store store (error, boost::filesystem::unique_path (), wallet_json);
|
||||
ASSERT_FALSE (error);
|
||||
ASSERT_TRUE (store.exists (rai::test_genesis_key.pub));
|
||||
}
|
||||
|
||||
TEST (parse_endpoint, valid)
|
||||
{
|
||||
std::string string ("127.0.0.1:24000");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue