mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 20:25:48 +00:00
Add ledgerClosed event
This commit is contained in:
@@ -78,7 +78,8 @@ function loadSchemas() {
|
|||||||
require('./schemas/tx.json'),
|
require('./schemas/tx.json'),
|
||||||
require('./schemas/uint32.json'),
|
require('./schemas/uint32.json'),
|
||||||
require('./schemas/value.json'),
|
require('./schemas/value.json'),
|
||||||
require('./schemas/prepare.json')
|
require('./schemas/prepare.json'),
|
||||||
|
require('./schemas/ledger-closed.json')
|
||||||
];
|
];
|
||||||
const titles = _.map(schemas, schema => schema.title);
|
const titles = _.map(schemas, schema => schema.title);
|
||||||
const duplicates = _.keys(_.pick(_.countBy(titles), count => count > 1));
|
const duplicates = _.keys(_.pick(_.countBy(titles), count => count > 1));
|
||||||
|
|||||||
21
src/api/common/schemas/ledger-closed.json
Normal file
21
src/api/common/schemas/ledger-closed.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||||
|
"title": "ledgerClosed",
|
||||||
|
"description": "A ledgerClosed event message",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"feeBase": {"type": "integer", "minimum": 0},
|
||||||
|
"feeReference": {"type": "integer", "minimum": 0},
|
||||||
|
"ledgerHash": {"$ref": "ledgerHash"},
|
||||||
|
"ledgerVersion": {"$ref": "ledgerVersion"},
|
||||||
|
"ledgerTimestamp": {"type": "string", "format": "date-time"},
|
||||||
|
"reserveBase": {"type": "integer", "minimum": 0},
|
||||||
|
"reserveIncrement": {"type": "integer", "minimum": 0},
|
||||||
|
"transactionCount": {"type": "integer", "minimum": 0},
|
||||||
|
"validatedLedgerVersions": {"type": "string"}
|
||||||
|
},
|
||||||
|
"addtionalProperties": false,
|
||||||
|
"required": ["feeBase", "feeReference", "ledgerHash", "ledgerTimestamp",
|
||||||
|
"reserveBase", "reserveIncrement", "transactionCount",
|
||||||
|
"ledgerVersion", "validatedLedgerVersions"]
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"result": {"type": "string"},
|
"result": {"type": "string"},
|
||||||
"timestamp": {"type": "string"},
|
"timestamp": {"type": "string", "format": "date-time"},
|
||||||
"fee": {"$ref": "value"},
|
"fee": {"$ref": "value"},
|
||||||
"balanceChanges": {
|
"balanceChanges": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
|
const util = require('util');
|
||||||
|
const EventEmitter = require('events').EventEmitter;
|
||||||
const common = require('./common');
|
const common = require('./common');
|
||||||
const server = require('./server/server');
|
const server = require('./server/server');
|
||||||
const connect = server.connect;
|
const connect = server.connect;
|
||||||
@@ -34,11 +36,19 @@ const getLedger = require('./ledger/ledger');
|
|||||||
|
|
||||||
function RippleAPI(options: {}) {
|
function RippleAPI(options: {}) {
|
||||||
common.validate.remoteOptions(options);
|
common.validate.remoteOptions(options);
|
||||||
|
if (EventEmitter instanceof Function) { // always true, needed for flow
|
||||||
|
EventEmitter.call(this);
|
||||||
|
}
|
||||||
const _options = _.assign({}, options, {automatic_resubmission: false});
|
const _options = _.assign({}, options, {automatic_resubmission: false});
|
||||||
this.remote = new common.core.Remote(_options);
|
this.remote = new common.core.Remote(_options);
|
||||||
|
this.remote.on('ledger_closed', message => {
|
||||||
|
this.emit('ledgerClosed', server.formatLedgerClose(message));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
RippleAPI.prototype = {
|
util.inherits(RippleAPI, EventEmitter);
|
||||||
|
|
||||||
|
_.assign(RippleAPI.prototype, {
|
||||||
connect,
|
connect,
|
||||||
disconnect,
|
disconnect,
|
||||||
isConnected,
|
isConnected,
|
||||||
@@ -67,7 +77,7 @@ RippleAPI.prototype = {
|
|||||||
|
|
||||||
generateAddress,
|
generateAddress,
|
||||||
errors
|
errors
|
||||||
};
|
});
|
||||||
|
|
||||||
// these are exposed only for use by unit tests; they are not part of the API
|
// these are exposed only for use by unit tests; they are not part of the API
|
||||||
RippleAPI._PRIVATE = {
|
RippleAPI._PRIVATE = {
|
||||||
|
|||||||
@@ -87,11 +87,30 @@ function getServerInfo(): Promise<GetServerInfoResponse> {
|
|||||||
return common.promisify(getServerInfoAsync.bind(this))();
|
return common.promisify(getServerInfoAsync.bind(this))();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function rippleTimeToISO8601(rippleTime: string): string {
|
||||||
|
return new Date(common.core.utils.toTimestamp(rippleTime)).toISOString();
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatLedgerClose(ledgerClose: Object): Object {
|
||||||
|
return {
|
||||||
|
feeBase: ledgerClose.fee_base,
|
||||||
|
feeReference: ledgerClose.fee_ref,
|
||||||
|
ledgerHash: ledgerClose.ledger_hash,
|
||||||
|
ledgerVersion: ledgerClose.ledger_index,
|
||||||
|
ledgerTimestamp: rippleTimeToISO8601(ledgerClose.ledger_time),
|
||||||
|
reserveBase: ledgerClose.reserve_base,
|
||||||
|
reserveIncrement: ledgerClose.reserve_inc,
|
||||||
|
transactionCount: ledgerClose.txn_count,
|
||||||
|
validatedLedgerVersions: ledgerClose.validated_ledgers
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
connect,
|
connect,
|
||||||
disconnect,
|
disconnect,
|
||||||
isConnected,
|
isConnected,
|
||||||
getServerInfo,
|
getServerInfo,
|
||||||
getFee,
|
getFee,
|
||||||
getLedgerVersion
|
getLedgerVersion,
|
||||||
|
formatLedgerClose
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -786,6 +786,13 @@ describe('RippleAPI', function() {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('ledgerClosed', function(done) {
|
||||||
|
this.api.on('ledgerClosed', message => {
|
||||||
|
checkResult(responses.ledgerClosed, 'ledgerClosed', message);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
this.api.remote.getServer().emit('message', ledgerClosed);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('RippleAPI - offline', function() {
|
describe('RippleAPI - offline', function() {
|
||||||
|
|||||||
3
test/fixtures/api/responses/index.js
vendored
3
test/fixtures/api/responses/index.js
vendored
@@ -52,5 +52,6 @@ module.exports = {
|
|||||||
complex: require('./prepare-trustline.json')
|
complex: require('./prepare-trustline.json')
|
||||||
},
|
},
|
||||||
sign: require('./sign.json'),
|
sign: require('./sign.json'),
|
||||||
submit: require('./submit.json')
|
submit: require('./submit.json'),
|
||||||
|
ledgerClosed: require('./ledger-closed.json')
|
||||||
};
|
};
|
||||||
|
|||||||
11
test/fixtures/api/responses/ledger-closed.json
vendored
Normal file
11
test/fixtures/api/responses/ledger-closed.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"feeBase": 10,
|
||||||
|
"feeReference": 10,
|
||||||
|
"ledgerVersion": 14804627,
|
||||||
|
"ledgerHash": "9141FA171F2C0CE63E609466AF728FF66C12F7ACD4B4B50B0947A7F3409D593A",
|
||||||
|
"ledgerTimestamp": "2015-07-23T05:50:40.000Z",
|
||||||
|
"reserveBase": 20000000,
|
||||||
|
"reserveIncrement": 5000000,
|
||||||
|
"transactionCount": 19,
|
||||||
|
"validatedLedgerVersions": "13983423-14804627"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user