mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-12-01 01:25:48 +00:00
Update ledgerSelect to throw if ledger arg is unrecognized
This commit is contained in:
@@ -1095,30 +1095,17 @@ Remote.prototype.requestUnsubscribe = function(streams, callback) {
|
|||||||
/**
|
/**
|
||||||
* Request transaction_entry
|
* Request transaction_entry
|
||||||
*
|
*
|
||||||
* @param {String} transaction hash
|
* @param {Object} options -
|
||||||
* @param {String|Number} ledger hash or sequence
|
* @param {String} [options.transaction] - hash
|
||||||
|
* @param {String|Number} [options.ledger='validated'] - hash or sequence
|
||||||
* @param [Function] callback
|
* @param [Function] callback
|
||||||
* @return {Request} request
|
* @return {Request} request
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Remote.prototype.requestTransactionEntry = function(options, callback) {
|
Remote.prototype.requestTransactionEntry = function(options, callback) {
|
||||||
// If not trusted, need to check proof, maybe talk packet protocol.
|
|
||||||
// utils.assert(this.trusted);
|
|
||||||
const request = new Request(this, 'transaction_entry');
|
const request = new Request(this, 'transaction_entry');
|
||||||
request.txHash(options.hash);
|
request.txHash(options.hash);
|
||||||
|
request.selectLedger(options.ledger, 'validated');
|
||||||
switch (typeof options.ledger) {
|
|
||||||
case 'string':
|
|
||||||
case 'number':
|
|
||||||
request.selectLedger(options.ledger);
|
|
||||||
break;
|
|
||||||
case 'undefined':
|
|
||||||
request.ledgerIndex('validated');
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new Error('ledger must be a ledger index or hash');
|
|
||||||
}
|
|
||||||
|
|
||||||
request.callback(callback);
|
request.callback(callback);
|
||||||
return request;
|
return request;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
const _ = require('lodash');
|
||||||
const EventEmitter = require('events').EventEmitter;
|
const EventEmitter = require('events').EventEmitter;
|
||||||
const util = require('util');
|
const util = require('util');
|
||||||
const async = require('async');
|
const async = require('async');
|
||||||
@@ -75,7 +76,7 @@ Request.prototype.request = function(servers, callback) {
|
|||||||
|
|
||||||
Request.prototype.filter =
|
Request.prototype.filter =
|
||||||
Request.prototype.addFilter =
|
Request.prototype.addFilter =
|
||||||
Request.prototype.broadcast = function(filterFn=Boolean) {
|
Request.prototype.broadcast = function(filterFn = Boolean) {
|
||||||
const self = this;
|
const self = this;
|
||||||
|
|
||||||
if (!this.requested) {
|
if (!this.requested) {
|
||||||
@@ -88,7 +89,7 @@ Request.prototype.broadcast = function(filterFn=Boolean) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let lastResponse = new Error('No servers available');
|
let lastResponse = new Error('No servers available');
|
||||||
let connectTimeouts = { };
|
const connectTimeouts = { };
|
||||||
const emit = this.emit;
|
const emit = this.emit;
|
||||||
|
|
||||||
this.emit = function(event, a, b) {
|
this.emit = function(event, a, b) {
|
||||||
@@ -266,26 +267,13 @@ Request.prototype.timeout = function(duration, callback) {
|
|||||||
Request.prototype.setServer = function(server) {
|
Request.prototype.setServer = function(server) {
|
||||||
let selected = null;
|
let selected = null;
|
||||||
|
|
||||||
switch (typeof server) {
|
if (_.isString(server)) {
|
||||||
case 'object':
|
selected = _.find(this.remote._servers, s => s._url === server) || null;
|
||||||
selected = server;
|
} else if (_.isObject(server)) {
|
||||||
break;
|
selected = server;
|
||||||
|
|
||||||
case 'string':
|
|
||||||
// Find server by URL
|
|
||||||
const servers = this.remote._servers;
|
|
||||||
|
|
||||||
for (let i = 0, s; (s = servers[i]); i++) {
|
|
||||||
if (s._url === server) {
|
|
||||||
selected = s;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.server = selected;
|
this.server = selected;
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -336,26 +324,30 @@ Request.prototype.ledgerIndex = function(ledger_index) {
|
|||||||
/**
|
/**
|
||||||
* Set either ledger_index or ledger_hash based on heuristic
|
* Set either ledger_index or ledger_hash based on heuristic
|
||||||
*
|
*
|
||||||
* @param {Number|String} ledger identifier
|
* @param {Number|String} ledger - identifier
|
||||||
|
* @param {Object} options -
|
||||||
|
* @param {Number|String} defaultValue - default if `ledger` unspecifed
|
||||||
*/
|
*/
|
||||||
|
Request.prototype.ledgerSelect =
|
||||||
|
Request.prototype.selectLedger = function(ledger, defaultValue) {
|
||||||
|
const selected = ledger || defaultValue;
|
||||||
|
|
||||||
Request.prototype.selectLedger =
|
switch (selected) {
|
||||||
Request.prototype.ledgerSelect = function(ledger) {
|
|
||||||
switch (ledger) {
|
|
||||||
case 'current':
|
case 'current':
|
||||||
case 'closed':
|
case 'closed':
|
||||||
case 'validated':
|
case 'validated':
|
||||||
this.message.ledger_index = ledger;
|
this.message.ledger_index = selected;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (Number(ledger) && isFinite(Number(ledger))) {
|
if (Number(selected) && isFinite(Number(selected))) {
|
||||||
this.message.ledger_index = Number(ledger);
|
this.message.ledger_index = Number(selected);
|
||||||
} else if (/^[A-F0-9]{64}$/.test(ledger)) {
|
} else if (/^[A-F0-9]{64}$/.test(selected)) {
|
||||||
this.message.ledger_hash = ledger;
|
this.message.ledger_hash = selected;
|
||||||
|
} else if (selected !== undefined) {
|
||||||
|
throw new Error('unknown ledger format: ' + selected);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -535,7 +527,7 @@ Request.prototype.addStream = function(stream, values) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (arguments.length > 1) {
|
} else if (arguments.length > 1) {
|
||||||
for (let arg in arguments) {
|
for (const arg in arguments) {
|
||||||
this.addStream(arguments[arg]);
|
this.addStream(arguments[arg]);
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
Reference in New Issue
Block a user