Add getLedgerHeader method

This commit is contained in:
Chris Clark
2015-08-12 17:11:32 -07:00
parent 002102ce62
commit 728595dc96
8 changed files with 101 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "getLedgerHeader",
"type": "object",
"properties": {
"accepted": {"type": "boolean"},
"closed": {"type": "boolean"},
"accountHash": {"$ref": "hash256"},
"closeTime": {"type": "integer", "minimum": 0},
"closeTimeResolution": {"type": "integer", "minimum": 1},
"closeFlags": {"type": "integer", "minimum": 0},
"ledgerHash": {"$ref": "hash256"},
"ledgerVersion": {"$ref": "ledgerVersion"},
"parentLedgerHash": {"$ref": "hash256"},
"parentCloseTime": {"type": "integer", "minimum": 0},
"totalDrops": {"$ref": "value"},
"transactionHash": {"$ref": "hash256"}
},
"required": [
"accepted",
"closed",
"accountHash",
"closeTime",
"closeTimeResolution",
"closeFlags",
"ledgerHash",
"ledgerVersion",
"parentLedgerHash",
"parentCloseTime",
"totalDrops",
"transactionHash"
],
"additionalProperties": false
}

View File

@@ -55,6 +55,7 @@ module.exports = {
secret: validateSecret,
currency: _.partial(schemaValidate, 'currency'),
identifier: _.partial(schemaValidate, 'hash256'),
ledgerVersion: _.partial(schemaValidate, 'ledgerVersion'),
sequence: _.partial(schemaValidate, 'sequence'),
order: _.partial(schemaValidate, 'order'),
orderbook: _.partial(schemaValidate, 'orderbook'),

View File

@@ -29,6 +29,7 @@ const submit = require('./transaction/submit');
const errors = require('./common').errors;
const convertExceptions = require('./common').convertExceptions;
const generateWallet = convertExceptions(common.core.Wallet.generate);
const getLedgerHeader = require('./ledger/ledger-header');
function RippleAPI(options: {}) {
const _options = _.assign({}, options, {automatic_resubmission: false});
@@ -52,6 +53,7 @@ RippleAPI.prototype = {
getOrderbook,
getSettings,
getAccountInfo,
getLedgerHeader,
preparePayment,
prepareTrustline,

View File

@@ -0,0 +1,42 @@
/* @flow */
'use strict';
const utils = require('./utils');
const validate = utils.common.validate;
const composeAsync = utils.common.composeAsync;
function formatLedgerHeader(response) {
const header = response.ledger;
return {
accepted: header.accepted,
closed: header.closed,
accountHash: header.account_hash,
closeTime: header.close_time,
closeTimeResolution: header.close_time_resolution,
closeFlags: header.close_flags,
ledgerHash: header.hash || header.ledger_hash,
ledgerVersion: parseInt(header.ledger_index || header.seqNum, 10),
parentLedgerHash: header.parent_hash,
parentCloseTime: header.parent_close_time,
totalDrops: header.total_coins || header.totalCoins,
transactionHash: header.transaction_hash
};
}
function getLedgerHeaderAsync(ledgerVersion, callback) {
if (ledgerVersion) {
validate.ledgerVersion(ledgerVersion);
}
const request = {
ledger: ledgerVersion || 'validated'
};
this.remote.requestLedger(request,
composeAsync(formatLedgerHeader, callback));
}
function getLedgerHeader(ledgerVersion?: number) {
return utils.promisify(getLedgerHeaderAsync.bind(this))(ledgerVersion);
}
module.exports = getLedgerHeader;

View File

@@ -554,6 +554,11 @@ describe('RippleAPI', function() {
assert.strictEqual(this.api.getLedgerVersion(), 8819951);
});
it('getLedgerHeader', function() {
return this.api.getLedgerHeader().then(
_.partial(checkResult, responses.getLedgerHeader, 'getLedgerHeader'));
});
it('ledger utils - compareTransactions', function() {
let first = {outcome: {ledgerVersion: 1, indexInLedger: 100}};
let second = {outcome: {ledgerVersion: 1, indexInLedger: 200}};

View File

@@ -0,0 +1,14 @@
{
"accepted": true,
"closed": true,
"accountHash": "EC028EC32896D537ECCA18D18BEBE6AE99709FEFF9EF72DBD3A7819E918D8B96",
"closeTime": 464908910,
"closeTimeResolution": 10,
"closeFlags": 0,
"ledgerHash": "0F7ED9F40742D8A513AE86029462B7A6768325583DF8EE21B7EC663019DD6A0F",
"ledgerVersion": "9038214",
"parentLedgerHash": "4BB9CBE44C39DC67A1BE849C7467FE1A6D1F73949EA163C38A0121A15E04FFDE",
"parentCloseTime": 464908900,
"totalDrops": "99999973964317514",
"transactionHash": "ECB730839EB55B1B114D5D1AD2CD9A932C35BA9AB6D3A8C2F08935EAC2BAC239"
}

View File

@@ -27,6 +27,7 @@ module.exports = {
},
getTransactions: require('./get-transactions.json'),
getTrustlines: require('./get-trustlines.json'),
getLedgerHeader: require('./get-ledger-header'),
prepareOrderCancellation: require('./prepare-order-cancellation.json'),
prepareOrder: require('./prepare-order.json'),
prepareOrderSell: require('./prepare-order-sell.json'),

View File

@@ -7,9 +7,11 @@
"accepted": true,
"account_hash": "EC028EC32896D537ECCA18D18BEBE6AE99709FEFF9EF72DBD3A7819E918D8B96",
"close_time": 464908910,
"parent_close_time": 464908900,
"close_time_human": "2014-Sep-24 21:21:50",
"close_time_resolution": 10,
"closed": true,
"close_flags": 0,
"hash": "0F7ED9F40742D8A513AE86029462B7A6768325583DF8EE21B7EC663019DD6A0F",
"ledger_hash": "0F7ED9F40742D8A513AE86029462B7A6768325583DF8EE21B7EC663019DD6A0F",
"ledger_index": "9038214",