mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-22 05:05:48 +00:00
Add getLedgerHeader method
This commit is contained in:
34
src/api/common/schemas/get-ledger-header.json
Normal file
34
src/api/common/schemas/get-ledger-header.json
Normal 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
|
||||
}
|
||||
@@ -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'),
|
||||
|
||||
@@ -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,
|
||||
|
||||
42
src/api/ledger/ledger-header.js
Normal file
42
src/api/ledger/ledger-header.js
Normal 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;
|
||||
@@ -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}};
|
||||
|
||||
14
test/fixtures/api/responses/get-ledger-header.json
vendored
Normal file
14
test/fixtures/api/responses/get-ledger-header.json
vendored
Normal 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"
|
||||
}
|
||||
1
test/fixtures/api/responses/index.js
vendored
1
test/fixtures/api/responses/index.js
vendored
@@ -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'),
|
||||
|
||||
2
test/fixtures/api/rippled/ledger.json
vendored
2
test/fixtures/api/rippled/ledger.json
vendored
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user