Add ledgerClosed event

This commit is contained in:
Chris Clark
2015-09-16 17:53:19 -07:00
parent 49623cb4dd
commit 7ee368965c
8 changed files with 76 additions and 6 deletions

View File

@@ -78,7 +78,8 @@ function loadSchemas() {
require('./schemas/tx.json'),
require('./schemas/uint32.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 duplicates = _.keys(_.pick(_.countBy(titles), count => count > 1));

View 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"]
}

View File

@@ -4,7 +4,7 @@
"type": "object",
"properties": {
"result": {"type": "string"},
"timestamp": {"type": "string"},
"timestamp": {"type": "string", "format": "date-time"},
"fee": {"$ref": "value"},
"balanceChanges": {
"type": "object",

View File

@@ -2,6 +2,8 @@
'use strict';
const _ = require('lodash');
const util = require('util');
const EventEmitter = require('events').EventEmitter;
const common = require('./common');
const server = require('./server/server');
const connect = server.connect;
@@ -34,11 +36,19 @@ const getLedger = require('./ledger/ledger');
function RippleAPI(options: {}) {
common.validate.remoteOptions(options);
if (EventEmitter instanceof Function) { // always true, needed for flow
EventEmitter.call(this);
}
const _options = _.assign({}, options, {automatic_resubmission: false});
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,
disconnect,
isConnected,
@@ -67,7 +77,7 @@ RippleAPI.prototype = {
generateAddress,
errors
};
});
// these are exposed only for use by unit tests; they are not part of the API
RippleAPI._PRIVATE = {

View File

@@ -87,11 +87,30 @@ function getServerInfo(): Promise<GetServerInfoResponse> {
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 = {
connect,
disconnect,
isConnected,
getServerInfo,
getFee,
getLedgerVersion
getLedgerVersion,
formatLedgerClose
};

View File

@@ -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() {

View File

@@ -52,5 +52,6 @@ module.exports = {
complex: require('./prepare-trustline.json')
},
sign: require('./sign.json'),
submit: require('./submit.json')
submit: require('./submit.json'),
ledgerClosed: require('./ledger-closed.json')
};

View 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"
}