mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 12:15:51 +00:00
Better error message when using methods that require a connection when servers are not provided
This commit is contained in:
@@ -4,7 +4,7 @@ const WebSocket = require('ws');
|
||||
const parseURL = require('url').parse;
|
||||
const RangeSet = require('./rangeset').RangeSet;
|
||||
const {RippledError, DisconnectedError, NotConnectedError,
|
||||
TimeoutError, ResponseFormatError} = require('./errors');
|
||||
TimeoutError, ResponseFormatError, ConnectionError} = require('./errors');
|
||||
|
||||
function isStreamMessageType(type) {
|
||||
return type === 'ledgerClosed' ||
|
||||
@@ -115,6 +115,10 @@ class Connection extends EventEmitter {
|
||||
|
||||
connect() {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!this._url) {
|
||||
reject(new ConnectionError(
|
||||
'Cannot connect because no server was specified'));
|
||||
}
|
||||
if (this._state === WebSocket.OPEN) {
|
||||
resolve();
|
||||
} else if (this._state === WebSocket.CONNECTING) {
|
||||
|
||||
@@ -76,10 +76,10 @@ class RippleAPI extends EventEmitter {
|
||||
constructor(options: APIOptions = {}) {
|
||||
common.validate.apiOptions(options);
|
||||
super();
|
||||
this._feeCushion = options.feeCushion || 1.2;
|
||||
if (options.servers !== undefined) {
|
||||
const servers: Array<string> = options.servers;
|
||||
if (servers.length === 1) {
|
||||
this._feeCushion = options.feeCushion || 1.2;
|
||||
this.connection = new RestrictedConnection(servers[0], options);
|
||||
this.connection.on('ledgerClosed', message => {
|
||||
this.emit('ledgerClosed', server.formatLedgerClose(message));
|
||||
@@ -90,6 +90,10 @@ class RippleAPI extends EventEmitter {
|
||||
} else {
|
||||
throw new errors.RippleError('Multi-server not implemented');
|
||||
}
|
||||
} else {
|
||||
// use null object pattern to provide better error message if user
|
||||
// tries to call a method that requires a connection
|
||||
this.connection = new RestrictedConnection(null, options);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,8 @@ function parseAccountOrder(address: string, order: Object): Object {
|
||||
const properties = {
|
||||
maker: address,
|
||||
sequence: order.seq,
|
||||
makerExchangeRate: computeQuality(takerGetsAmount, takerPaysAmount)
|
||||
makerExchangeRate: order.quality ? order.quality.toString()
|
||||
: computeQuality(takerGetsAmount, takerPaysAmount)
|
||||
};
|
||||
|
||||
return {specification, properties};
|
||||
|
||||
@@ -884,6 +884,15 @@ describe('RippleAPI - offline', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('getServerInfo - offline', function() {
|
||||
const api = new RippleAPI();
|
||||
return api.getServerInfo().then(() => {
|
||||
assert(false, 'Should throw error');
|
||||
}).catch(error => {
|
||||
assert(error instanceof api.errors.NotConnectedError);
|
||||
});
|
||||
});
|
||||
|
||||
it('computeLedgerHash', function() {
|
||||
const api = new RippleAPI();
|
||||
const header = requests.computeLedgerHash.header;
|
||||
|
||||
@@ -282,8 +282,7 @@ module.exports = function(port) {
|
||||
assert(false, 'Unrecognized path find request: '
|
||||
+ JSON.stringify(request));
|
||||
}
|
||||
// delay response to simulate calculation time so we can test queuing
|
||||
setTimeout(() => conn.send(response), 20);
|
||||
conn.send(response);
|
||||
});
|
||||
|
||||
mock.on('request_gateway_balances', function(request, conn) {
|
||||
|
||||
Reference in New Issue
Block a user