diff --git a/RPCServer.cpp b/RPCServer.cpp index 3cb1b095b..0f4c6288b 100644 --- a/RPCServer.cpp +++ b/RPCServer.cpp @@ -414,9 +414,18 @@ Json::Value RPCServer::doTx(Json::Value& params) if(extractString(param2, params, 1)) { // family seq + LocalAccount::pointer account=theApp->getWallet().parseAccount(param1+":"+param2); + if(!account) + return JSONRPCError(500, "Account not found"); + Json::Value ret; + if(!theApp->getWallet().getTxsJson(account->getAddress(), ret)) + return JSONRPCError(500, "Unable to get wallet transactions"); + return ret; + } + else + { + // account } - - // account return "not implemented"; } diff --git a/Wallet.cpp b/Wallet.cpp index e4504b575..d778b47f3 100644 --- a/Wallet.cpp +++ b/Wallet.cpp @@ -899,3 +899,16 @@ bool Wallet::getTxJson(const uint256& txn, Json::Value& ret) ret=it->second->getJson(); return true; } + +bool Wallet::getTxsJson(const uint160& account, Json::Value& ret) +{ + boost::recursive_mutex::scoped_lock sl(mLock); + for(std::map::iterator it=mTransactions.begin(); + it!=mTransactions.end(); ++it) + { + Transaction::pointer txn=it->second->getTransaction(); + if(txn && ((account==txn->getFromAccount())||(account==txn->getToAccount())) ) + ret[it->first.GetHex()]=it->second->getJson(); + } + return true; +} diff --git a/Wallet.h b/Wallet.h index 1ddd23006..0e8d22b66 100644 --- a/Wallet.h +++ b/Wallet.h @@ -74,6 +74,7 @@ public: Json::Value getFamilyJson(const uint160& family); bool getTxJson(const uint256& txid, Json::Value& value); + bool getTxsJson(const uint160& acctid, Json::Value& value); void addLocalTransactions(Json::Value&); static bool isHexPrivateKey(const std::string&);