aboutsummaryrefslogtreecommitdiff
path: root/src/rpc/core_rpc_server.cpp
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2016-11-22 20:00:40 +0000
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2016-11-22 20:00:40 +0000
commit2c0173c722af7a6dc1f30c3423d97247a4fd1ad7 (patch)
tree6873b5b38e61128ee8b9d7131899f276a875f894 /src/rpc/core_rpc_server.cpp
parentrpc: add output indices to gettransactions (diff)
downloadmonero-2c0173c722af7a6dc1f30c3423d97247a4fd1ad7.tar.xz
Add a get_outs (fully text based) version of get_outs.bin
Diffstat (limited to 'src/rpc/core_rpc_server.cpp')
-rw-r--r--src/rpc/core_rpc_server.cpp38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/rpc/core_rpc_server.cpp b/src/rpc/core_rpc_server.cpp
index d9fa0e383..f31732f49 100644
--- a/src/rpc/core_rpc_server.cpp
+++ b/src/rpc/core_rpc_server.cpp
@@ -246,7 +246,7 @@ namespace cryptonote
return true;
}
//------------------------------------------------------------------------------------------------------------------------------
- bool core_rpc_server::on_get_outs(const COMMAND_RPC_GET_OUTPUTS::request& req, COMMAND_RPC_GET_OUTPUTS::response& res)
+ bool core_rpc_server::on_get_outs_bin(const COMMAND_RPC_GET_OUTPUTS_BIN::request& req, COMMAND_RPC_GET_OUTPUTS_BIN::response& res)
{
CHECK_CORE_BUSY();
res.status = "Failed";
@@ -269,6 +269,42 @@ namespace cryptonote
return true;
}
//------------------------------------------------------------------------------------------------------------------------------
+ bool core_rpc_server::on_get_outs(const COMMAND_RPC_GET_OUTPUTS::request& req, COMMAND_RPC_GET_OUTPUTS::response& res)
+ {
+ CHECK_CORE_BUSY();
+ res.status = "Failed";
+
+ if (m_restricted)
+ {
+ if (req.outputs.size() > MAX_RESTRICTED_GLOBAL_FAKE_OUTS_COUNT)
+ {
+ res.status = "Too many outs requested";
+ return true;
+ }
+ }
+
+ cryptonote::COMMAND_RPC_GET_OUTPUTS_BIN::request req_bin;
+ req_bin.outputs = req.outputs;
+ cryptonote::COMMAND_RPC_GET_OUTPUTS_BIN::response res_bin;
+ if(!m_core.get_outs(req_bin, res_bin))
+ {
+ return true;
+ }
+
+ // convert to text
+ for (const auto &i: res_bin.outs)
+ {
+ res.outs.push_back(cryptonote::COMMAND_RPC_GET_OUTPUTS::outkey());
+ cryptonote::COMMAND_RPC_GET_OUTPUTS::outkey &outkey = res.outs.back();
+ outkey.key = epee::string_tools::pod_to_hex(i.key);
+ outkey.mask = epee::string_tools::pod_to_hex(i.mask);
+ outkey.unlocked = i.unlocked;
+ }
+
+ res.status = CORE_RPC_STATUS_OK;
+ return true;
+ }
+ //------------------------------------------------------------------------------------------------------------------------------
bool core_rpc_server::on_get_random_rct_outs(const COMMAND_RPC_GET_RANDOM_RCT_OUTPUTS::request& req, COMMAND_RPC_GET_RANDOM_RCT_OUTPUTS::response& res)
{
CHECK_CORE_BUSY();