Browse Source

few more jsonrpc methods

cl-refactor
Marek Kotewicz 10 years ago
parent
commit
2c58f14856
  1. 125
      eth/EthStubServer.cpp
  2. 1
      eth/EthStubServer.h

125
eth/EthStubServer.cpp

@ -31,6 +31,54 @@ using namespace std;
using namespace dev; using namespace dev;
using namespace dev::eth; using namespace dev::eth;
static Json::Value toJson(const dev::eth::BlockInfo& bi)
{
Json::Value res;
res["hash"] = boost::lexical_cast<string>(bi.hash);
res["parentHash"] = boost::lexical_cast<string>(bi.parentHash);
res["sha3Uncles"] = boost::lexical_cast<string>(bi.sha3Uncles);
res["miner"] = boost::lexical_cast<string>(bi.coinbaseAddress);
res["stateRoot"] = boost::lexical_cast<string>(bi.stateRoot);
res["transactionsRoot"] = boost::lexical_cast<string>(bi.transactionsRoot);
res["difficulty"] = boost::lexical_cast<string>(bi.difficulty);
res["number"] = boost::lexical_cast<string>(bi.number);
res["minGasPrice"] = boost::lexical_cast<string>(bi.minGasPrice);
res["gasLimit"] = boost::lexical_cast<string>(bi.gasLimit);
res["timestamp"] = boost::lexical_cast<string>(bi.timestamp);
res["extraData"] = jsFromBinary(bi.extraData);
res["nonce"] = boost::lexical_cast<string>(bi.nonce);
return res;
}
static Json::Value toJson(const dev::eth::PastMessage& t)
{
Json::Value res;
res["input"] = jsFromBinary(t.input);
res["output"] = jsFromBinary(t.output);
res["to"] = boost::lexical_cast<string>(t.to);
res["from"] = boost::lexical_cast<string>(t.from);
res["origin"] = boost::lexical_cast<string>(t.origin);
res["timestamp"] = boost::lexical_cast<string>(t.timestamp);
res["coinbase"] = boost::lexical_cast<string>(t.coinbase);
res["block"] = boost::lexical_cast<string>(t.block);
Json::Value path;
for (int i: t.path)
path.append(i);
res["path"] = path;
res["number"] = (int)t.number;
return res;
}
static Json::Value toJson(const dev::eth::PastMessages& pms)
{
Json::Value res;
for (dev::eth::PastMessage const & t: pms)
res.append(toJson(t));
return res;
}
EthStubServer::EthStubServer(jsonrpc::AbstractServerConnector* _conn, WebThreeDirect& _web3): EthStubServer::EthStubServer(jsonrpc::AbstractServerConnector* _conn, WebThreeDirect& _web3):
AbstractEthStubServer(_conn), AbstractEthStubServer(_conn),
m_web3(_web3) m_web3(_web3)
@ -52,24 +100,7 @@ Json::Value EthStubServer::block(const string &numberOrHash)
{ {
auto n = jsToU256(numberOrHash); auto n = jsToU256(numberOrHash);
auto h = n < client()->number() ? client()->hashFromNumber((unsigned)n) : ::jsToFixed<32>(numberOrHash); auto h = n < client()->number() ? client()->hashFromNumber((unsigned)n) : ::jsToFixed<32>(numberOrHash);
return toJson(client()->blockInfo(h));
Json::Value res;
BlockInfo bi = client()->blockInfo(h);
res["hash"] = boost::lexical_cast<string>(bi.hash);
res["parentHash"] = boost::lexical_cast<string>(bi.parentHash);
res["sha3Uncles"] = boost::lexical_cast<string>(bi.sha3Uncles);
res["miner"] = boost::lexical_cast<string>(bi.coinbaseAddress);
res["stateRoot"] = boost::lexical_cast<string>(bi.stateRoot);
res["transactionsRoot"] = boost::lexical_cast<string>(bi.transactionsRoot);
res["difficulty"] = boost::lexical_cast<string>(bi.difficulty);
res["number"] = boost::lexical_cast<string>(bi.number);
res["minGasPrice"] = boost::lexical_cast<string>(bi.minGasPrice);
res["gasLimit"] = boost::lexical_cast<string>(bi.gasLimit);
res["timestamp"] = boost::lexical_cast<string>(bi.timestamp);
res["extraData"] = jsFromBinary(bi.extraData);
res["nonce"] = boost::lexical_cast<string>(bi.nonce);
return res;
} }
static TransactionJS toTransaction(const Json::Value &json) static TransactionJS toTransaction(const Json::Value &json)
@ -247,26 +278,7 @@ Json::Value EthStubServer::messages(const Json::Value &json)
Json::Value res; Json::Value res;
if (!client()) if (!client())
return res; return res;
dev::eth::PastMessages pms = client()->messages(toMessageFilter(json)); return toJson(client()->messages(toMessageFilter(json)));
for (dev::eth::PastMessage const & t: pms)
{
res["input"] = jsFromBinary(t.input);
res["output"] = jsFromBinary(t.output);
res["to"] = boost::lexical_cast<string>(t.to);
res["from"] = boost::lexical_cast<string>(t.from);
res["origin"] = boost::lexical_cast<string>(t.origin);
res["timestamp"] = boost::lexical_cast<string>(t.timestamp);
res["coinbase"] = boost::lexical_cast<string>(t.coinbase);
res["block"] = boost::lexical_cast<string>(t.block);
Json::Value path;
for (int i: t.path)
path.append(i);
res["path"] = path;
res["number"] = (int)t.number;
}
return res;
} }
int EthStubServer::number() int EthStubServer::number()
@ -289,25 +301,25 @@ std::string EthStubServer::secretToAddress(const string &s)
Json::Value EthStubServer::setListening(const bool &l) Json::Value EthStubServer::setListening(const bool &l)
{ {
if (!client()) if (!client())
return Json::Value(); return Json::nullValue;
/* if (l) /* if (l)
client()->startNetwork(); client()->startNetwork();
else else
client()->stopNetwork();*/ client()->stopNetwork();*/
return Json::Value(); return Json::nullValue;
} }
Json::Value EthStubServer::setMining(const bool &l) Json::Value EthStubServer::setMining(const bool &l)
{ {
if (!client()) if (!client())
return Json::Value(); return Json::nullValue;
if (l) if (l)
client()->startMining(); client()->startMining();
else else
client()->stopMining(); client()->stopMining();
return Json::Value(); return Json::nullValue;
} }
std::string EthStubServer::sha3(const string &s) std::string EthStubServer::sha3(const string &s)
@ -384,38 +396,17 @@ Json::Value EthStubServer::transaction(const int &i, const string &numberOrHash)
Json::Value EthStubServer::uncle(const int &i, const string &numberOrHash) Json::Value EthStubServer::uncle(const int &i, const string &numberOrHash)
{ {
auto n = jsToU256(numberOrHash);
auto h = n < client()->number() ? client()->hashFromNumber((unsigned)n) : jsToFixed<32>(numberOrHash);
return client() ? toJson(client()->uncle(h, i)) : Json::Value();
} }
//TODO watch!
std::string EthStubServer::watch(const string &json) std::string EthStubServer::watch(const string &json)
{ {
} }
Json::Value EthStubServer::blockJson(const std::string& _hash)
{
Json::Value res;
// auto const& bc = client()->blockChain();
// auto b = _hash.length() ? bc.block(h256(_hash)) : bc.block();
// auto bi = BlockInfo(b);
// res["number"] = boost::lexical_cast<string>(bi.number);
// res["hash"] = boost::lexical_cast<string>(bi.hash);
// res["parentHash"] = boost::lexical_cast<string>(bi.parentHash);
// res["sha3Uncles"] = boost::lexical_cast<string>(bi.sha3Uncles);
// res["coinbaseAddress"] = boost::lexical_cast<string>(bi.coinbaseAddress);
// res["stateRoot"] = boost::lexical_cast<string>(bi.stateRoot);
// res["transactionsRoot"] = boost::lexical_cast<string>(bi.transactionsRoot);
// res["minGasPrice"] = boost::lexical_cast<string>(bi.minGasPrice);
// res["gasLimit"] = boost::lexical_cast<string>(bi.gasLimit);
// res["gasUsed"] = boost::lexical_cast<string>(bi.gasUsed);
// res["difficulty"] = boost::lexical_cast<string>(bi.difficulty);
// res["timestamp"] = boost::lexical_cast<string>(bi.timestamp);
// res["nonce"] = boost::lexical_cast<string>(bi.nonce);
return res;
}
Json::Value EthStubServer::jsontypeToValue(int _jsontype) Json::Value EthStubServer::jsontypeToValue(int _jsontype)
{ {

1
eth/EthStubServer.h

@ -73,5 +73,4 @@ private:
dev::WebThreeDirect& m_web3; dev::WebThreeDirect& m_web3;
std::vector<dev::KeyPair> m_keys; std::vector<dev::KeyPair> m_keys;
Json::Value jsontypeToValue(int); Json::Value jsontypeToValue(int);
Json::Value blockJson(const std::string&);
}; };

Loading…
Cancel
Save