forked from lthn/blockchain
Multiwallet RPC API: initial code draft
This commit is contained in:
parent
69647023e0
commit
2ab206b6c1
5 changed files with 114 additions and 35 deletions
|
|
@ -209,40 +209,9 @@ public:
|
|||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
|
||||
struct wallet_info
|
||||
{
|
||||
std::list<tools::wallet_public::asset_balance_entry> balances;
|
||||
uint64_t mined_total;
|
||||
std::string address;
|
||||
std::string view_sec_key;
|
||||
std::string path;
|
||||
bool is_auditable;
|
||||
bool is_watch_only;
|
||||
typedef wallet_public::wallet_info wallet_info;
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(balances)
|
||||
KV_SERIALIZE(mined_total)
|
||||
KV_SERIALIZE(address)
|
||||
KV_SERIALIZE(view_sec_key)
|
||||
KV_SERIALIZE(path)
|
||||
KV_SERIALIZE(is_auditable);
|
||||
KV_SERIALIZE(is_watch_only);
|
||||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct wallet_entry_info
|
||||
{
|
||||
wallet_info wi;
|
||||
uint64_t wallet_id;
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(wi)
|
||||
KV_SERIALIZE(wallet_id)
|
||||
END_KV_SERIALIZE_MAP()
|
||||
|
||||
};
|
||||
typedef wallet_public::wallet_entry_info wallet_entry_info;
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -126,6 +126,10 @@ namespace tools
|
|||
virtual void on_transfer_canceled(const wallet_public::wallet_transfer_info& wti) {}
|
||||
virtual void on_message(message_severity /*severity*/, const std::string& /*m*/) {}
|
||||
virtual void on_tor_status_change(const std::string& state) {}
|
||||
|
||||
//mw api
|
||||
virtual void on_mw_get_wallets(std::vector<wallet_public::wallet_entry_info>& wallets) {}
|
||||
virtual void on_mw_select_wallet(uint64_t wallet_id) {}
|
||||
};
|
||||
|
||||
struct tx_dust_policy
|
||||
|
|
@ -546,6 +550,7 @@ namespace tools
|
|||
//i_wallet2_callback* callback() const { return m_wcallback; }
|
||||
//void callback(i_wallet2_callback* callback) { m_callback = callback; }
|
||||
void callback(std::shared_ptr<i_wallet2_callback> callback) { m_wcallback = callback; m_do_rise_transfer = (callback != nullptr); }
|
||||
i_wallet2_callback* get_callback() { return m_wcallback; }
|
||||
void set_do_rise_transfer(bool do_rise) { m_do_rise_transfer = do_rise; }
|
||||
|
||||
bool has_related_alias_entry_unconfirmed(const currency::transaction& tx);
|
||||
|
|
|
|||
|
|
@ -1246,6 +1246,79 @@ namespace wallet_public
|
|||
};
|
||||
|
||||
|
||||
struct wallet_info
|
||||
{
|
||||
std::list<tools::wallet_public::asset_balance_entry> balances;
|
||||
uint64_t mined_total;
|
||||
std::string address;
|
||||
std::string view_sec_key;
|
||||
std::string path;
|
||||
bool is_auditable;
|
||||
bool is_watch_only;
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(balances)
|
||||
KV_SERIALIZE(mined_total)
|
||||
KV_SERIALIZE(address)
|
||||
KV_SERIALIZE(view_sec_key)
|
||||
KV_SERIALIZE(path)
|
||||
KV_SERIALIZE(is_auditable);
|
||||
KV_SERIALIZE(is_watch_only);
|
||||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct wallet_entry_info
|
||||
{
|
||||
wallet_info wi;
|
||||
uint64_t wallet_id;
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(wi)
|
||||
KV_SERIALIZE(wallet_id)
|
||||
END_KV_SERIALIZE_MAP()
|
||||
|
||||
};
|
||||
|
||||
struct COMMAND_MW_GET_WALLETS
|
||||
{
|
||||
struct request
|
||||
{
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
|
||||
struct response
|
||||
{
|
||||
std::vector<view::wallet_entry_info> wallets;
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(wallets)
|
||||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
};
|
||||
|
||||
struct COMMAND_MW_SELECT_WALLET
|
||||
{
|
||||
struct request
|
||||
{
|
||||
uint64_t wallet_id;
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(wallet_id)
|
||||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
|
||||
|
||||
struct response
|
||||
{
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
struct assets_whitelist
|
||||
{
|
||||
std::vector<currency::asset_descriptor_with_id> assets;
|
||||
|
|
|
|||
|
|
@ -999,6 +999,30 @@ namespace tools
|
|||
return true;
|
||||
}
|
||||
//------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
bool wallet_rpc_server::on_mw_get_wallets(const wallet_public::COMMAND_MW_GET_WALLETS& req, wallet_public::COMMAND_MW_GET_WALLETS::response& res, epee::json_rpc::error& er, connection_context& cntx)
|
||||
{
|
||||
i_wallet2_callback* pcallback = m_wallet.get_callback();
|
||||
if (!pcallback)
|
||||
{
|
||||
er.code = WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR;
|
||||
er.message = "WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR";
|
||||
return false;
|
||||
}
|
||||
pcallback->on_mw_get_wallets(res.wallets);
|
||||
return true;
|
||||
}
|
||||
//------------------------------------------------------------------------------------------------------------------------------
|
||||
bool wallet_rpc_server::on_mw_select_wallet(const wallet_public::COMMAND_MW_SELECT_WALLET& req, wallet_public::COMMAND_MW_SELECT_WALLET::response& res, epee::json_rpc::error& er, connection_context& cntx)
|
||||
{
|
||||
i_wallet2_callback* pcallback = m_wallet.get_callback();
|
||||
if (!pcallback)
|
||||
{
|
||||
er.code = WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR;
|
||||
er.message = "WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR";
|
||||
return false;
|
||||
}
|
||||
pcallback->on_mw_select_wallet(req.wallet_id);
|
||||
return true;
|
||||
}
|
||||
//------------------------------------------------------------------------------------------------------------------------------
|
||||
} // namespace tools
|
||||
|
|
|
|||
|
|
@ -77,6 +77,11 @@ namespace tools
|
|||
MAP_JON_RPC_WE("ionic_swap_generate_proposal", on_ionic_swap_generate_proposal, wallet_public::COMMAND_IONIC_SWAP_GENERATE_PROPOSAL)
|
||||
MAP_JON_RPC_WE("ionic_swap_get_proposal_info", on_ionic_swap_get_proposal_info, wallet_public::COMMAND_IONIC_SWAP_GET_PROPOSAL_INFO)
|
||||
MAP_JON_RPC_WE("ionic_swap_accept_proposal", on_ionic_swap_accept_proposal, wallet_public::COMMAND_IONIC_SWAP_ACCEPT_PROPOSAL)
|
||||
|
||||
//MULTIWALLET APIs
|
||||
MAP_JON_RPC_WE("mw_get_wallets", on_mw_get_wallets, wallet_public::COMMAND_MW_GET_WALLETS)
|
||||
MAP_JON_RPC_WE("mw_select_wallet", on_mw_select_wallet, wallet_public::COMMAND_MW_SELECT_WALLET)
|
||||
|
||||
END_JSON_RPC_MAP()
|
||||
END_URI_MAP2()
|
||||
|
||||
|
|
@ -122,6 +127,9 @@ namespace tools
|
|||
bool on_ionic_swap_get_proposal_info(const wallet_public::COMMAND_IONIC_SWAP_GET_PROPOSAL_INFO& req, wallet_public::COMMAND_IONIC_SWAP_GET_PROPOSAL_INFO::response& res, epee::json_rpc::error& er, connection_context& cntx);
|
||||
bool on_ionic_swap_accept_proposal(const wallet_public::COMMAND_IONIC_SWAP_ACCEPT_PROPOSAL& req, wallet_public::COMMAND_IONIC_SWAP_ACCEPT_PROPOSAL::response& res, epee::json_rpc::error& er, connection_context& cntx);
|
||||
|
||||
bool on_mw_get_wallets(const wallet_public::COMMAND_MW_GET_WALLETS& req, wallet_public::COMMAND_MW_GET_WALLETS::response& res, epee::json_rpc::error& er, connection_context& cntx);
|
||||
bool on_mw_select_wallet(const wallet_public::COMMAND_MW_SELECT_WALLET& req, wallet_public::COMMAND_MW_SELECT_WALLET::response& res, epee::json_rpc::error& er, connection_context& cntx);
|
||||
|
||||
|
||||
bool handle_command_line(const boost::program_options::variables_map& vm);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue