From 37705edd2b4b32e8faffe7ee3ea8d7749d22f403 Mon Sep 17 00:00:00 2001 From: woodser Date: Wed, 19 Jun 2019 10:37:32 -0400 Subject: [PATCH] MoneroUtils::toPropertyTree(vector) --- src/utils/MoneroUtils.cpp | 22 ++++++++++++++ src/utils/MoneroUtils.h | 3 ++ src/wallet/MoneroWalletModel.cpp | 50 +++++++++++++++++--------------- 3 files changed, 51 insertions(+), 24 deletions(-) diff --git a/src/utils/MoneroUtils.cpp b/src/utils/MoneroUtils.cpp index 48aca4e..1a41e79 100644 --- a/src/utils/MoneroUtils.cpp +++ b/src/utils/MoneroUtils.cpp @@ -118,3 +118,25 @@ string MoneroUtils::serialize(const boost::property_tree::ptree& node) { boost::property_tree::write_json(ss, node, false); return ss.str(); } + +boost::property_tree::ptree MoneroUtils::toPropertyTree(const vector strs) { + //cout << "toPropertyTree(strs)" << endl; + boost::property_tree::ptree strsNode; + for (const auto& str : strs) { + boost::property_tree::ptree strNode; + strNode.put("", str); + strsNode.push_back(std::make_pair("", strNode)); + } + return strsNode; +} + +boost::property_tree::ptree MoneroUtils::toPropertyTree(const vector nums) { + //cout << "toPropertyTree(nums)" << endl; + boost::property_tree::ptree numsNode; + for (const auto& num : nums) { + boost::property_tree::ptree numNode; + numNode.put("", num); + numsNode.push_back(std::make_pair("", numNode)); + } + return numsNode; +} diff --git a/src/utils/MoneroUtils.h b/src/utils/MoneroUtils.h index c5e6338..fbaa355 100644 --- a/src/utils/MoneroUtils.h +++ b/src/utils/MoneroUtils.h @@ -81,6 +81,9 @@ namespace MoneroUtils return typeNodes; } + boost::property_tree::ptree toPropertyTree(const vector strs); + boost::property_tree::ptree toPropertyTree(const vector nums); + /** * Modified from core_rpc_server.cpp to return a string. * diff --git a/src/wallet/MoneroWalletModel.cpp b/src/wallet/MoneroWalletModel.cpp index 20f1e23..8266154 100644 --- a/src/wallet/MoneroWalletModel.cpp +++ b/src/wallet/MoneroWalletModel.cpp @@ -95,9 +95,9 @@ namespace monero { boost::property_tree::ptree MoneroOutgoingTransfer::toPropertyTree() const { //cout << "MoneroOutgoingTransfer::toPropertyTree(node)" << endl; boost::property_tree::ptree node = MoneroTransfer::toPropertyTree(); - if (!subaddressIndices.empty()) throw runtime_error("subaddressIndices not implemented"); - if (!addresses.empty()) throw runtime_error("addresses not implemented"); - if (!destinations.empty()) throw runtime_error("destinations not implemented"); + if (!subaddressIndices.empty()) node.add_child("subaddressIndices", MoneroUtils::toPropertyTree(subaddressIndices)); + if (!addresses.empty()) node.add_child("addresses", MoneroUtils::toPropertyTree(addresses)); + if (!destinations.empty()) node.add_child("destinations", MoneroUtils::toPropertyTree(destinations)); return node; } @@ -109,29 +109,31 @@ namespace monero { if (subaddressIndex != boost::none) node.put("subaddressIndex", *subaddressIndex); if (hasDestinations != boost::none) node.put("hasDestinations", *hasDestinations); if (txRequest != boost::none) node.add_child("txRequest", (*txRequest)->toPropertyTree()); + if (!subaddressIndices.empty()) node.add_child("subaddressIndices", MoneroUtils::toPropertyTree(subaddressIndices)); + if (!addresses.empty()) node.add_child("addresses", MoneroUtils::toPropertyTree(addresses)); if (!destinations.empty()) node.add_child("destinations", MoneroUtils::toPropertyTree(destinations)); - - // TODO: if (!addresses.empty()) node.add_child("addresses", MoneroUtils::toPropertyTree(subaddresses)); - - // convert addresses - boost::property_tree::ptree addressesNode; - for (const string& address : addresses) { - boost::property_tree::ptree addressNode; - addressNode.put("", address); - addressesNode.push_back(std::make_pair("", addressNode)); - } - node.add_child("addresses", addressesNode); - - // convert subaddress indices - boost::property_tree::ptree subaddressIndicesNode; - for (const uint32_t& subaddressIndex : subaddressIndices) { - boost::property_tree::ptree subaddressIndexNode; - subaddressIndexNode.put("", subaddressIndex); - subaddressIndicesNode.push_back(std::make_pair("", subaddressIndexNode)); - } - node.add_child("subaddressIndices", subaddressIndicesNode); - return node; + +// TODO: if (!addresses.empty()) node.add_child("addresses", MoneroUtils::toPropertyTree(subaddresses)); +// +// convert addresses +// +// boost::property_tree::ptree addressesNode; +// for (const string& address : addresses) { +// boost::property_tree::ptree addressNode; +// addressNode.put("", address); +// addressesNode.push_back(std::make_pair("", addressNode)); +// } +// node.add_child("addresses", addressesNode); +// +// // convert subaddress indices +// boost::property_tree::ptree subaddressIndicesNode; +// for (const uint32_t& subaddressIndex : subaddressIndices) { +// boost::property_tree::ptree subaddressIndexNode; +// subaddressIndexNode.put("", subaddressIndex); +// subaddressIndicesNode.push_back(std::make_pair("", subaddressIndexNode)); +// } +// node.add_child("subaddressIndices", subaddressIndicesNode); } //boost::property_tree::ptree MoneroUtils::txWalletToPropertyTree(const MoneroTxWallet& tx) {