Skip to content

Commit

Permalink
Update ledgerSelect to throw if ledger arg is unrecognized
Browse files Browse the repository at this point in the history
  • Loading branch information
sublimator committed Aug 21, 2015
1 parent 67672bd commit bca7382
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 47 deletions.
21 changes: 4 additions & 17 deletions src/core/remote.js
Expand Up @@ -1095,30 +1095,17 @@ Remote.prototype.requestUnsubscribe = function(streams, callback) {
/**
* Request transaction_entry
*
* @param {String} transaction hash
* @param {String|Number} ledger hash or sequence
* @param {Object} options -
* @param {String} [options.transaction] - hash
* @param {String|Number} [options.ledger='validated'] - hash or sequence
* @param [Function] callback
* @return {Request} request
*/

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');
request.txHash(options.hash);

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.selectLedger(options.ledger, 'validated');
request.callback(callback);
return request;
};
Expand Down
52 changes: 22 additions & 30 deletions src/core/request.js
@@ -1,5 +1,6 @@
'use strict';

const _ = require('lodash');
const EventEmitter = require('events').EventEmitter;
const util = require('util');
const async = require('async');
Expand Down Expand Up @@ -75,7 +76,7 @@ Request.prototype.request = function(servers, callback) {

Request.prototype.filter =
Request.prototype.addFilter =
Request.prototype.broadcast = function(filterFn=Boolean) {
Request.prototype.broadcast = function(filterFn = Boolean) {
const self = this;

if (!this.requested) {
Expand All @@ -88,7 +89,7 @@ Request.prototype.broadcast = function(filterFn=Boolean) {
}

let lastResponse = new Error('No servers available');
let connectTimeouts = { };
const connectTimeouts = { };
const emit = this.emit;

this.emit = function(event, a, b) {
Expand Down Expand Up @@ -266,26 +267,13 @@ Request.prototype.timeout = function(duration, callback) {
Request.prototype.setServer = function(server) {
let selected = null;

switch (typeof server) {
case 'object':
selected = server;
break;

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;
if (_.isString(server)) {
selected = _.find(this.remote._servers, s => s._url === server) || null;
} else if (_.isObject(server)) {
selected = server;
}

this.server = selected;

return this;
};

Expand Down Expand Up @@ -336,26 +324,30 @@ Request.prototype.ledgerIndex = function(ledger_index) {
/**
* 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 =
Request.prototype.ledgerSelect = function(ledger) {
switch (ledger) {
switch (selected) {
case 'current':
case 'closed':
case 'validated':
this.message.ledger_index = ledger;
this.message.ledger_index = selected;
break;
default:
if (Number(ledger) && isFinite(Number(ledger))) {
this.message.ledger_index = Number(ledger);
} else if (/^[A-F0-9]{64}$/.test(ledger)) {
this.message.ledger_hash = ledger;
if (Number(selected) && isFinite(Number(selected))) {
this.message.ledger_index = Number(selected);
} else if (/^[A-F0-9]{64}$/.test(selected)) {
this.message.ledger_hash = selected;
} else if (selected !== undefined) {
throw new Error('unknown ledger format: ' + selected);
}
break;
}

return this;
};

Expand Down Expand Up @@ -535,7 +527,7 @@ Request.prototype.addStream = function(stream, values) {
break;
}
} else if (arguments.length > 1) {
for (let arg in arguments) {
for (const arg in arguments) {
this.addStream(arguments[arg]);
}
return this;
Expand Down

0 comments on commit bca7382

Please sign in to comment.