Skip to content

Commit

Permalink
wallet_rpc_server: add count parameter to create_address
Browse files Browse the repository at this point in the history
  • Loading branch information
00-matt committed Nov 16, 2019
1 parent fe3f6a3 commit 88546b3
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 10 deletions.
30 changes: 27 additions & 3 deletions src/wallet/wallet_rpc_server.cpp
Expand Up @@ -550,9 +550,33 @@ namespace tools
if (!m_wallet) return not_open(er);
try
{
m_wallet->add_subaddress(req.account_index, req.label);
res.address_index = m_wallet->get_num_subaddresses(req.account_index) - 1;
res.address = m_wallet->get_subaddress_as_str({req.account_index, res.address_index});
uint32_t count = req.count;
if (count < 1) {
count = 1;
}
if (count > 128) {
er.code = WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR;
er.message = "Count must be less than 128.";
return false;
}

std::vector<std::string> addresses;
std::vector<uint32_t> address_indices;

addresses.reserve(count);
address_indices.reserve(count);

for (uint32_t i = 0; i < count; i++) {
m_wallet->add_subaddress(req.account_index, req.label);
uint32_t new_address_index = m_wallet->get_num_subaddresses(req.account_index) - 1;
address_indices.push_back(new_address_index);
addresses.push_back(m_wallet->get_subaddress_as_str({req.account_index, new_address_index}));
}

res.address = addresses[0];
res.address_index = address_indices[0];
res.addresses = addresses;
res.address_indices = address_indices;
}
catch (const std::exception& e)
{
Expand Down
12 changes: 9 additions & 3 deletions src/wallet/wallet_rpc_server_commands_defs.h
Expand Up @@ -182,24 +182,30 @@ namespace wallet_rpc
{
struct request_t
{
uint32_t account_index;
uint32_t account_index;
uint32_t count;
std::string label;

BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(account_index)
KV_SERIALIZE(count)
KV_SERIALIZE(label)
END_KV_SERIALIZE_MAP()
};
typedef epee::misc_utils::struct_init<request_t> request;

struct response_t
{
std::string address;
uint32_t address_index;
std::string address;
uint32_t address_index;
std::vector<std::string> addresses;
std::vector<uint32_t> address_indices;

BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE(address)
KV_SERIALIZE(address_index)
KV_SERIALIZE(addresses)
KV_SERIALIZE(address_indices)
END_KV_SERIALIZE_MAP()
};
typedef epee::misc_utils::struct_init<response_t> response;
Expand Down
9 changes: 5 additions & 4 deletions utils/python-rpc/framework/wallet.py
Expand Up @@ -232,19 +232,20 @@ def create_account(self, label = ""):
'params' : {
'label': label
},
'jsonrpc': '2.0',
'jsonrpc': '2.0',
'id': '0'
}
return self.rpc.send_json_rpc_request(create_account)

def create_address(self, account_index = 0, label = ""):
def create_address(self, account_index = 0, label = "", count = 1):
create_address = {
'method': 'create_address',
'params' : {
'account_index': account_index,
'label': label
'label': label,
'count': count
},
'jsonrpc': '2.0',
'jsonrpc': '2.0',
'id': '0'
}
return self.rpc.send_json_rpc_request(create_address)
Expand Down

0 comments on commit 88546b3

Please sign in to comment.