Remove exit node class #32, @abrkn
This commit is contained in:
parent
e3559660e3
commit
3dfc3cd0e8
1 changed files with 0 additions and 148 deletions
|
@ -1,148 +0,0 @@
|
||||||
(function (exports, Bitcoin, io, $, global) {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Expose constructor.
|
|
||||||
*/
|
|
||||||
|
|
||||||
exports.ExitNode = ExitNode;
|
|
||||||
|
|
||||||
function ExitNode(host, port, secure) {
|
|
||||||
this.setUri(host, port, secure);
|
|
||||||
|
|
||||||
this.unique = 1;
|
|
||||||
this.connected = false;
|
|
||||||
|
|
||||||
this.callbacks = [];
|
|
||||||
};
|
|
||||||
|
|
||||||
Bitcoin.EventEmitter.augment(ExitNode);
|
|
||||||
|
|
||||||
ExitNode.prototype.setUri = function (host, port, secure) {
|
|
||||||
this.uri = (secure ? "https://" : "http://")+host+":"+port;
|
|
||||||
};
|
|
||||||
|
|
||||||
ExitNode.prototype.connect = function (wallet) {
|
|
||||||
this.wallet = wallet;
|
|
||||||
|
|
||||||
// Workaround for socket.io not properly allowing disconnecting and reconnecting
|
|
||||||
delete io.sockets[this.uri];
|
|
||||||
io.j = [];
|
|
||||||
|
|
||||||
this.socket = io.connect(this.uri);
|
|
||||||
this.socket.on('connect', $.proxy(this.handleConnect, this));
|
|
||||||
this.socket.on('error', function () {
|
|
||||||
console.log('error, test');
|
|
||||||
});
|
|
||||||
this.socket.on('message', $.proxy(this.handleMessage, this));
|
|
||||||
this.socket.on('disconnect', $.proxy(this.handleDisconnect, this));
|
|
||||||
};
|
|
||||||
|
|
||||||
ExitNode.prototype.disconnect = function () {
|
|
||||||
if (this.socket) {
|
|
||||||
this.socket.disconnect();
|
|
||||||
this.socket = null;
|
|
||||||
this.connected = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.trigger('connectStatus', {status: 'unknown'});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Make RPC call.
|
|
||||||
*/
|
|
||||||
ExitNode.prototype.call = function (method, argObj, callback) {
|
|
||||||
this.socket.send($.toJSON({
|
|
||||||
"method": method,
|
|
||||||
"params": [argObj],
|
|
||||||
"id": this.unique
|
|
||||||
}));
|
|
||||||
if (callback) this.callbacks[this.unique] = callback;
|
|
||||||
this.unique++;
|
|
||||||
};
|
|
||||||
|
|
||||||
ExitNode.prototype.handleConnect = function () {
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
this.connected = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
ExitNode.prototype.listen = function (addrs) {
|
|
||||||
self.call("pubkeysRegister", {
|
|
||||||
keys: addrs.join(',')
|
|
||||||
}, function (err, result) {
|
|
||||||
if (err) {
|
|
||||||
console.error("Could not register public keys");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
self.call("pubkeysListen", {
|
|
||||||
handle: result.handle
|
|
||||||
}, function (err, result) {
|
|
||||||
// Communicate the block height
|
|
||||||
self.trigger('blockInit', {height: result.height});
|
|
||||||
|
|
||||||
// Pass on the newly downloaded transactions
|
|
||||||
self.trigger('txData', {
|
|
||||||
confirmed: true,
|
|
||||||
txs: result.txs
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO: Download more transactions
|
|
||||||
|
|
||||||
self.trigger('connectStatus', {status: 'ok'});
|
|
||||||
});
|
|
||||||
|
|
||||||
self.call("pubkeysUnconfirmed", {
|
|
||||||
handle: result.handle
|
|
||||||
}, function (err, result) {
|
|
||||||
// Pass on the newly downloaded transactions
|
|
||||||
self.trigger('txData', {
|
|
||||||
confirmed: false,
|
|
||||||
txs: result.txs
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
ExitNode.prototype.handleMessage = function (data) {
|
|
||||||
// Handle JSON-RPC result messages
|
|
||||||
if ("undefined" !== typeof data.result &&
|
|
||||||
"function" == typeof this.callbacks[data.id]) {
|
|
||||||
this.callbacks[data.id](data.error, data.result);
|
|
||||||
|
|
||||||
// Handle JSON-RPC request messages
|
|
||||||
} else if ("undefined" !== typeof data.method) {
|
|
||||||
// Create an event
|
|
||||||
this.trigger(data.method, data.params[0]);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
ExitNode.prototype.handleDisconnect = function () {
|
|
||||||
// TODO: Attempt reconnect (unless disconnect was intended)
|
|
||||||
};
|
|
||||||
|
|
||||||
ExitNode.prototype.query = function (api, params, jsonp, callback) {
|
|
||||||
if ("function" === typeof jsonp) {
|
|
||||||
callback = jsonp;
|
|
||||||
jsonp = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
params = params || {};
|
|
||||||
callback = "function" === typeof callback ? callback : function () {};
|
|
||||||
|
|
||||||
var url = this.uri + '/' + api;
|
|
||||||
if (jsonp) {
|
|
||||||
url += "?callback=?";
|
|
||||||
}
|
|
||||||
|
|
||||||
$.getJSON(url, params, callback);
|
|
||||||
};
|
|
||||||
})(
|
|
||||||
'undefined' != typeof Bitcoin ? Bitcoin : module.exports,
|
|
||||||
'undefined' != typeof Bitcoin ? Bitcoin : require('bitcoinjs-lib'),
|
|
||||||
'undefined' != typeof io ? io : require('io'),
|
|
||||||
jQuery, // TODO: Add Node.js equivalent
|
|
||||||
this
|
|
||||||
);
|
|
Loading…
Add table
Reference in a new issue