wallet: refactor client.

This commit is contained in:
Christopher Jeffrey 2016-12-01 00:13:59 -08:00
parent 6939ba2cd3
commit 8e49d87e53
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -73,16 +73,16 @@ WalletClient.prototype._open = co(function* _open() {
});
this.socket.on('block connect', function(entry, txs) {
var data;
var block;
try {
data = parseBlock(entry, txs);
block = parseBlock(entry, txs);
} catch (e) {
self.emit('error', e);
return;
}
self.emit('block connect', data.entry, data.txs);
self.emit('block connect', block.entry, block.txs);
});
this.socket.on('block disconnect', function(entry) {
@ -99,16 +99,16 @@ WalletClient.prototype._open = co(function* _open() {
});
this.socket.on('block rescan', function(entry, txs, cb) {
var data;
var block;
try {
data = parseBlock(entry, txs);
block = parseBlock(entry, txs);
} catch (e) {
self.emit('error', e);
return cb();
}
self.emit('block rescan', data.entry, data.txs, cb);
self.emit('block rescan', block.entry, block.txs, cb);
});
this.socket.on('chain reset', function(tip) {
@ -125,7 +125,12 @@ WalletClient.prototype._open = co(function* _open() {
});
this.socket.on('tx', function(tx) {
tx = parseTX(tx);
try {
tx = parseTX(tx);
} catch (e) {
self.emit('error', e);
return;
}
self.emit('tx', tx);
});
@ -173,11 +178,7 @@ WalletClient.prototype.onConnect = function onConnect() {
WalletClient.prototype.sendAuth = function sendAuth() {
var self = this;
return new Promise(function(resolve, reject) {
self.socket.emit('auth', self.apiKey, function(err) {
if (err)
return reject(new Error(err.error));
resolve();
});
self.socket.emit('auth', self.apiKey, wrap(resolve, reject));
});
};
@ -190,11 +191,7 @@ WalletClient.prototype.sendAuth = function sendAuth() {
WalletClient.prototype.sendOptions = function sendOptions(options) {
var self = this;
return new Promise(function(resolve, reject) {
self.socket.emit('options', options, function(err) {
if (err)
return reject(new Error(err.error));
resolve();
});
self.socket.emit('options', options, wrap(resolve, reject));
});
};
@ -207,11 +204,7 @@ WalletClient.prototype.sendOptions = function sendOptions(options) {
WalletClient.prototype.watchChain = function watchChain() {
var self = this;
return new Promise(function(resolve, reject) {
self.socket.emit('watch chain', function(err) {
if (err)
return reject(new Error(err.error));
resolve();
});
self.socket.emit('watch chain', wrap(resolve, reject));
});
};
@ -223,11 +216,7 @@ WalletClient.prototype.watchChain = function watchChain() {
WalletClient.prototype.getTip = function getTip() {
var self = this;
return new Promise(function(resolve, reject) {
self.socket.emit('get tip', function(err, tip) {
if (err)
return reject(new Error(err.error));
resolve(parseEntry(tip));
});
self.socket.emit('get tip', wrap(resolve, reject, parseEntry));
});
};
@ -243,15 +232,7 @@ WalletClient.prototype.getEntry = function getEntry(block) {
if (typeof block === 'string')
block = util.revHex(block);
self.socket.emit('get entry', block, function(err, entry) {
if (err)
return reject(new Error(err.error));
if (!entry)
return resolve(null);
resolve(parseEntry(entry));
});
self.socket.emit('get entry', block, wrap(resolve, reject, parseEntry));
});
};
@ -265,11 +246,7 @@ WalletClient.prototype.send = function send(tx) {
var self = this;
return new Promise(function(resolve, reject) {
var raw = tx.toRaw();
self.socket.emit('send', raw, function(err) {
if (err)
return reject(new Error(err.error));
resolve();
});
self.socket.emit('send', raw, wrap(resolve, reject));
});
};
@ -283,11 +260,7 @@ WalletClient.prototype.setFilter = function setFilter(filter) {
var self = this;
return new Promise(function(resolve, reject) {
var raw = filter.toRaw();
self.socket.emit('set filter', raw, function(err) {
if (err)
return reject(new Error(err.error));
resolve();
});
self.socket.emit('set filter', raw, wrap(resolve, reject));
});
};
@ -309,11 +282,7 @@ WalletClient.prototype.addFilter = function addFilter(chunks) {
out.push(chunks[i]);
return new Promise(function(resolve, reject) {
self.socket.emit('add filter', out, function(err) {
if (err)
return reject(new Error(err.error));
resolve();
});
self.socket.emit('add filter', out, wrap(resolve, reject));
});
};
@ -325,11 +294,7 @@ WalletClient.prototype.addFilter = function addFilter(chunks) {
WalletClient.prototype.resetFilter = function resetFilter() {
var self = this;
return new Promise(function(resolve, reject) {
self.socket.emit('reset filter', function(err) {
if (err)
return reject(new Error(err.error));
resolve();
});
self.socket.emit('reset filter', wrap(resolve, reject));
});
};
@ -342,11 +307,8 @@ WalletClient.prototype.resetFilter = function resetFilter() {
WalletClient.prototype.estimateFee = function estimateFee(blocks) {
var self = this;
return new Promise(function(resolve, reject) {
self.socket.emit('estimate fee', blocks, function(err, rate) {
if (err)
return reject(new Error(err.error));
resolve(Amount.value(rate));
});
self.socket.emit('estimate fee', blocks,
wrap(resolve, reject, Amount.value));
});
};
@ -364,11 +326,7 @@ WalletClient.prototype.rescan = function rescan(start) {
if (typeof start === 'string')
start = util.revHex(start);
self.socket.emit('rescan', start, function(err) {
if (err)
return reject(new Error(err.error));
resolve();
});
self.socket.emit('rescan', start, wrap(resolve, reject));
});
};
@ -419,6 +377,34 @@ function BlockResult(entry, txs) {
this.txs = txs;
}
function wrap(resolve, reject, parse) {
return function(err, result) {
if (err) {
reject(new Error(err.error));
return;
}
if (!result) {
resolve(null);
return;
}
if (!parse) {
resolve(result);
return;
}
try {
result = parse(result);
} catch (e) {
reject(e);
return;
}
resolve(result);
};
}
/*
* Expose
*/