Expose get_relative_account_history to cli_wallet (#277)

This commit is contained in:
oxarbitrage 2017-05-09 20:58:42 -03:00 committed by Abit
parent fb825774c0
commit d482273add
2 changed files with 51 additions and 0 deletions

View file

@ -354,6 +354,15 @@ class wallet_api
*/
vector<operation_detail> get_account_history(string name, int limit)const;
/** Returns the relative operations on the named account from start number.
*
* @param name the name or id of the account
* @param stop Sequence number of earliest operation.
* @param limit the number of entries to return
* @param start the sequence number where to start looping back throw the history
* @returns a list of \c operation_history_objects
*/
vector<operation_detail> get_relative_account_history(string name, uint32_t stop, int limit, uint32_t start)const;
vector<bucket_object> get_market_history(string symbol, string symbol2, uint32_t bucket, fc::time_point_sec start, fc::time_point_sec end)const;
vector<limit_order_object> get_limit_orders(string a, string b, uint32_t limit)const;
@ -1651,6 +1660,7 @@ FC_API( graphene::wallet::wallet_api,
(get_block)
(get_account_count)
(get_account_history)
(get_relative_account_history)
(is_public_key_registered)
(get_market_history)
(get_global_properties)

View file

@ -2088,6 +2088,23 @@ public:
return ss.str();
};
m["get_relative_account_history"] = [this](variant result, const fc::variants& a)
{
auto r = result.as<vector<operation_detail>>();
std::stringstream ss;
for( operation_detail& d : r )
{
operation_history_object& i = d.op;
auto b = _remote_db->get_block_header(i.block_num);
FC_ASSERT(b);
ss << b->timestamp.to_iso_string() << " ";
i.op.visit(operation_printer(ss, *this, i.result));
ss << " \n";
}
return ss.str();
};
m["list_account_balances"] = [this](variant result, const fc::variants& a)
{
@ -2818,6 +2835,30 @@ vector<operation_detail> wallet_api::get_account_history(string name, int limit)
return result;
}
vector<operation_detail> wallet_api::get_relative_account_history(string name, uint32_t stop, int limit, uint32_t start)const
{
FC_ASSERT( start > 0 || limit <= 100 );
vector<operation_detail> result;
auto account_id = get_account(name).get_id();
while( limit > 0 )
{
vector <operation_history_object> current = my->_remote_hist->get_relative_account_history(account_id, stop, std::min<uint32_t>(100, limit), start);
for (auto &o : current) {
std::stringstream ss;
auto memo = o.op.visit(detail::operation_printer(ss, *my, o.result));
result.push_back(operation_detail{memo, ss.str(), o});
}
if (current.size() < std::min<uint32_t>(100, limit))
break;
limit -= current.size();
start -= 100;
if( start == 0 ) break;
}
return result;
}
vector<bucket_object> wallet_api::get_market_history( string symbol1, string symbol2, uint32_t bucket , fc::time_point_sec start, fc::time_point_sec end )const
{