Merge pull request #56 from colkito/fix/remove-http-module

added support for http request on the browser
This commit is contained in:
Gustavo Maximiliano Cortez 2014-04-15 18:46:03 -03:00
commit 65cbf5b46a
1 changed files with 65 additions and 24 deletions

View File

@ -2,12 +2,11 @@
var imports = require('soop').imports(); var imports = require('soop').imports();
var bitcore = require('bitcore'); var bitcore = require('bitcore');
var http = require('http');
function Insight(opts) { function Insight(opts) {
opts = opts || {}; opts = opts || {};
this.host = 'localhost'; this.host = 'test.insight.is';
this.port = '3001'; this.port = '80';
} }
function _asyncForEach(array, fn, callback) { function _asyncForEach(array, fn, callback) {
@ -83,6 +82,47 @@ Insight.prototype.sendRawTransaction = function(rawtx, cb) {
}; };
Insight.prototype._request = function(options, callback) { Insight.prototype._request = function(options, callback) {
if (typeof process === 'undefined' || !process.version) {
var request = new XMLHttpRequest();
// TODO: Normalize URL
var url = 'http://' + options.host;
if (options.port !== 80) {
url = url + ':' + options.port;
}
url = url + options.path;
if (options.data && options.method === 'GET') {
url = url + '?' + options.data;
}
request.open(options.method, url, true);
request.onreadystatechange = function() {
if (request.readyState === 4) {
if (request.status === 200) {
try {
return callback(null, JSON.parse(request.responseText));
} catch (e) {
return callback({message: 'Wrong response from insight'});
}
} else {
return callback({message: 'Error ' + response.statusCode});
}
}
};
if (options.method === 'POST') {
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.setRequestHeader('Content-length', options.data.length);
request.setRequestHeader('Connection', 'close');
request.send(options.data);
} else {
request.send(null);
}
} else {
var http = require('http');
var req = http.request(options, function(response) { var req = http.request(options, function(response) {
var ret; var ret;
if (response.statusCode == 200) { if (response.statusCode == 200) {
@ -109,6 +149,7 @@ Insight.prototype._request = function(options, callback) {
} }
req.end(); req.end();
} }
}
module.exports = require('soop')(Insight); module.exports = require('soop')(Insight);