mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-23 05:35: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,
|
secret: validateSecret,
|
||||||
currency: _.partial(schemaValidate, 'currency'),
|
currency: _.partial(schemaValidate, 'currency'),
|
||||||
identifier: _.partial(schemaValidate, 'hash256'),
|
identifier: _.partial(schemaValidate, 'hash256'),
|
||||||
|
ledgerVersion: _.partial(schemaValidate, 'ledgerVersion'),
|
||||||
sequence: _.partial(schemaValidate, 'sequence'),
|
sequence: _.partial(schemaValidate, 'sequence'),
|
||||||
order: _.partial(schemaValidate, 'order'),
|
order: _.partial(schemaValidate, 'order'),
|
||||||
orderbook: _.partial(schemaValidate, 'orderbook'),
|
orderbook: _.partial(schemaValidate, 'orderbook'),
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ const submit = require('./transaction/submit');
|
|||||||
const errors = require('./common').errors;
|
const errors = require('./common').errors;
|
||||||
const convertExceptions = require('./common').convertExceptions;
|
const convertExceptions = require('./common').convertExceptions;
|
||||||
const generateWallet = convertExceptions(common.core.Wallet.generate);
|
const generateWallet = convertExceptions(common.core.Wallet.generate);
|
||||||
|
const getLedgerHeader = require('./ledger/ledger-header');
|
||||||
|
|
||||||
function RippleAPI(options: {}) {
|
function RippleAPI(options: {}) {
|
||||||
const _options = _.assign({}, options, {automatic_resubmission: false});
|
const _options = _.assign({}, options, {automatic_resubmission: false});
|
||||||
@@ -52,6 +53,7 @@ RippleAPI.prototype = {
|
|||||||
getOrderbook,
|
getOrderbook,
|
||||||
getSettings,
|
getSettings,
|
||||||
getAccountInfo,
|
getAccountInfo,
|
||||||
|
getLedgerHeader,
|
||||||
|
|
||||||
preparePayment,
|
preparePayment,
|
||||||
prepareTrustline,
|
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);
|
assert.strictEqual(this.api.getLedgerVersion(), 8819951);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('getLedgerHeader', function() {
|
||||||
|
return this.api.getLedgerHeader().then(
|
||||||
|
_.partial(checkResult, responses.getLedgerHeader, 'getLedgerHeader'));
|
||||||
|
});
|
||||||
|
|
||||||
it('ledger utils - compareTransactions', function() {
|
it('ledger utils - compareTransactions', function() {
|
||||||
let first = {outcome: {ledgerVersion: 1, indexInLedger: 100}};
|
let first = {outcome: {ledgerVersion: 1, indexInLedger: 100}};
|
||||||
let second = {outcome: {ledgerVersion: 1, indexInLedger: 200}};
|
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'),
|
getTransactions: require('./get-transactions.json'),
|
||||||
getTrustlines: require('./get-trustlines.json'),
|
getTrustlines: require('./get-trustlines.json'),
|
||||||
|
getLedgerHeader: require('./get-ledger-header'),
|
||||||
prepareOrderCancellation: require('./prepare-order-cancellation.json'),
|
prepareOrderCancellation: require('./prepare-order-cancellation.json'),
|
||||||
prepareOrder: require('./prepare-order.json'),
|
prepareOrder: require('./prepare-order.json'),
|
||||||
prepareOrderSell: require('./prepare-order-sell.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,
|
"accepted": true,
|
||||||
"account_hash": "EC028EC32896D537ECCA18D18BEBE6AE99709FEFF9EF72DBD3A7819E918D8B96",
|
"account_hash": "EC028EC32896D537ECCA18D18BEBE6AE99709FEFF9EF72DBD3A7819E918D8B96",
|
||||||
"close_time": 464908910,
|
"close_time": 464908910,
|
||||||
|
"parent_close_time": 464908900,
|
||||||
"close_time_human": "2014-Sep-24 21:21:50",
|
"close_time_human": "2014-Sep-24 21:21:50",
|
||||||
"close_time_resolution": 10,
|
"close_time_resolution": 10,
|
||||||
"closed": true,
|
"closed": true,
|
||||||
|
"close_flags": 0,
|
||||||
"hash": "0F7ED9F40742D8A513AE86029462B7A6768325583DF8EE21B7EC663019DD6A0F",
|
"hash": "0F7ED9F40742D8A513AE86029462B7A6768325583DF8EE21B7EC663019DD6A0F",
|
||||||
"ledger_hash": "0F7ED9F40742D8A513AE86029462B7A6768325583DF8EE21B7EC663019DD6A0F",
|
"ledger_hash": "0F7ED9F40742D8A513AE86029462B7A6768325583DF8EE21B7EC663019DD6A0F",
|
||||||
"ledger_index": "9038214",
|
"ledger_index": "9038214",
|
||||||
|
|||||||
Reference in New Issue
Block a user