Merge pull request #5391
932ef50[REST] JSON output: remove block infos from tx details if it is nested in block (Jonas Schnelli)cae5486[REST] added /rest/block/notxdetails/<hash> into REST-interface.md documentation (Jonas Schnelli)73351c3[REST] /rest/block response with full tx details (Jonas Schnelli)
This commit is contained in:
26
src/rest.cpp
26
src/rest.cpp
@@ -42,7 +42,7 @@ public:
|
||||
};
|
||||
|
||||
extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry);
|
||||
extern Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex);
|
||||
extern Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDetails = false);
|
||||
|
||||
static RestErr RESTERR(enum HTTPStatusCode status, string message)
|
||||
{
|
||||
@@ -92,7 +92,8 @@ static bool ParseHashStr(const string& strReq, uint256& v)
|
||||
static bool rest_block(AcceptedConnection* conn,
|
||||
string& strReq,
|
||||
map<string, string>& mapHeaders,
|
||||
bool fRun)
|
||||
bool fRun,
|
||||
bool showTxDetails)
|
||||
{
|
||||
vector<string> params;
|
||||
enum RetFormat rf = ParseDataFormat(params, strReq);
|
||||
@@ -131,7 +132,7 @@ static bool rest_block(AcceptedConnection* conn,
|
||||
}
|
||||
|
||||
case RF_JSON: {
|
||||
Object objBlock = blockToJSON(block, pblockindex);
|
||||
Object objBlock = blockToJSON(block, pblockindex, showTxDetails);
|
||||
string strJSON = write_string(Value(objBlock), false) + "\n";
|
||||
conn->stream() << HTTPReply(HTTP_OK, strJSON, fRun) << std::flush;
|
||||
return true;
|
||||
@@ -146,6 +147,22 @@ static bool rest_block(AcceptedConnection* conn,
|
||||
return true; // continue to process further HTTP reqs on this cxn
|
||||
}
|
||||
|
||||
static bool rest_block_extended(AcceptedConnection* conn,
|
||||
string& strReq,
|
||||
map<string, string>& mapHeaders,
|
||||
bool fRun)
|
||||
{
|
||||
return rest_block(conn, strReq, mapHeaders, fRun, true);
|
||||
}
|
||||
|
||||
static bool rest_block_notxdetails(AcceptedConnection* conn,
|
||||
string& strReq,
|
||||
map<string, string>& mapHeaders,
|
||||
bool fRun)
|
||||
{
|
||||
return rest_block(conn, strReq, mapHeaders, fRun, false);
|
||||
}
|
||||
|
||||
static bool rest_tx(AcceptedConnection* conn,
|
||||
string& strReq,
|
||||
map<string, string>& mapHeaders,
|
||||
@@ -205,7 +222,8 @@ static const struct {
|
||||
bool fRun);
|
||||
} uri_prefixes[] = {
|
||||
{"/rest/tx/", rest_tx},
|
||||
{"/rest/block/", rest_block},
|
||||
{"/rest/block/notxdetails/", rest_block_notxdetails},
|
||||
{"/rest/block/", rest_block_extended},
|
||||
};
|
||||
|
||||
bool HTTPReq_REST(AcceptedConnection* conn,
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
using namespace json_spirit;
|
||||
using namespace std;
|
||||
|
||||
extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry);
|
||||
void ScriptPubKeyToJSON(const CScript& scriptPubKey, Object& out, bool fIncludeHex);
|
||||
|
||||
double GetDifficulty(const CBlockIndex* blockindex)
|
||||
@@ -50,7 +51,7 @@ double GetDifficulty(const CBlockIndex* blockindex)
|
||||
}
|
||||
|
||||
|
||||
Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex)
|
||||
Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDetails = false)
|
||||
{
|
||||
Object result;
|
||||
result.push_back(Pair("hash", block.GetHash().GetHex()));
|
||||
@@ -65,7 +66,16 @@ Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex)
|
||||
result.push_back(Pair("merkleroot", block.hashMerkleRoot.GetHex()));
|
||||
Array txs;
|
||||
BOOST_FOREACH(const CTransaction&tx, block.vtx)
|
||||
txs.push_back(tx.GetHash().GetHex());
|
||||
{
|
||||
if(txDetails)
|
||||
{
|
||||
Object objTx;
|
||||
TxToJSON(tx, uint256(0), objTx);
|
||||
txs.push_back(objTx);
|
||||
}
|
||||
else
|
||||
txs.push_back(tx.GetHash().GetHex());
|
||||
}
|
||||
result.push_back(Pair("tx", txs));
|
||||
result.push_back(Pair("time", block.GetBlockTime()));
|
||||
result.push_back(Pair("nonce", (uint64_t)block.nNonce));
|
||||
|
||||
Reference in New Issue
Block a user