mirror of
https://github.com/status-im/web3.js.git
synced 2025-02-23 03:28:07 +00:00
Http Basic Auth without additional dependencies (#909)
* HTTP Basic Auth, some cleanups There’s no need for additional dependency `btoa` as `XHR2` already has the support for Basic Auth. * remove redundant code
This commit is contained in:
parent
8fbd5f7c3c
commit
1f5e8c9266
@ -22,31 +22,29 @@
|
||||
* @date 2015
|
||||
*/
|
||||
|
||||
|
||||
var errors = require('./errors');
|
||||
var errors = require('./errors')
|
||||
|
||||
// workaround to use httpprovider in different envs
|
||||
|
||||
// browser
|
||||
if (typeof window !== 'undefined' && window.XMLHttpRequest) {
|
||||
XMLHttpRequest = window.XMLHttpRequest; // jshint ignore: line
|
||||
XMLHttpRequest = window.XMLHttpRequest // jshint ignore: line
|
||||
// node
|
||||
} else {
|
||||
XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; // jshint ignore: line
|
||||
XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest // jshint ignore: line
|
||||
}
|
||||
|
||||
var XHR2 = require('xhr2'); // jshint ignore: line
|
||||
var btoa = require('btoa');
|
||||
var XHR2 = require('xhr2') // jshint ignore: line
|
||||
|
||||
/**
|
||||
* HttpProvider should be used to send rpc calls over http
|
||||
*/
|
||||
var HttpProvider = function (host, timeout, user, password) {
|
||||
this.host = host || 'http://localhost:8545';
|
||||
this.timeout = timeout || 0;
|
||||
this.user = user;
|
||||
this.password = password;
|
||||
};
|
||||
this.host = host || 'http://localhost:8545'
|
||||
this.timeout = timeout || 0
|
||||
this.user = user
|
||||
this.password = password
|
||||
}
|
||||
|
||||
/**
|
||||
* Should be called to prepare new XMLHttpRequest
|
||||
@ -56,23 +54,19 @@ var HttpProvider = function (host, timeout, user, password) {
|
||||
* @return {XMLHttpRequest} object
|
||||
*/
|
||||
HttpProvider.prototype.prepareRequest = function (async) {
|
||||
var request;
|
||||
var request
|
||||
|
||||
if (async) {
|
||||
request = new XHR2();
|
||||
request.timeout = this.timeout;
|
||||
}else {
|
||||
request = new XMLHttpRequest();
|
||||
}
|
||||
if (async) {
|
||||
request = new XHR2()
|
||||
request.timeout = this.timeout
|
||||
} else {
|
||||
request = new XMLHttpRequest()
|
||||
}
|
||||
|
||||
request.open('POST', this.host, async);
|
||||
if (this.user && this.password) {
|
||||
var value = 'Basic ' + btoa(this.user + ':' + this.password);
|
||||
request.setRequestHeader('Authorization', value);
|
||||
}
|
||||
request.setRequestHeader('Content-Type','application/json');
|
||||
return request;
|
||||
};
|
||||
request.open('POST', this.host, async, this.user, this.password)
|
||||
request.setRequestHeader('Content-Type', 'application/json')
|
||||
return request
|
||||
}
|
||||
|
||||
/**
|
||||
* Should be called to make sync request
|
||||
@ -82,24 +76,24 @@ HttpProvider.prototype.prepareRequest = function (async) {
|
||||
* @return {Object} result
|
||||
*/
|
||||
HttpProvider.prototype.send = function (payload) {
|
||||
var request = this.prepareRequest(false);
|
||||
var request = this.prepareRequest(false)
|
||||
|
||||
try {
|
||||
request.send(JSON.stringify(payload));
|
||||
} catch(error) {
|
||||
throw errors.InvalidConnection(this.host);
|
||||
}
|
||||
try {
|
||||
request.send(JSON.stringify(payload))
|
||||
} catch (error) {
|
||||
throw errors.InvalidConnection(this.host)
|
||||
}
|
||||
|
||||
var result = request.responseText;
|
||||
var result = request.responseText
|
||||
|
||||
try {
|
||||
result = JSON.parse(result);
|
||||
} catch(e) {
|
||||
throw errors.InvalidResponse(request.responseText);
|
||||
}
|
||||
try {
|
||||
result = JSON.parse(result)
|
||||
} catch (e) {
|
||||
throw errors.InvalidResponse(request.responseText)
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* Should be used to make async request
|
||||
@ -109,33 +103,33 @@ HttpProvider.prototype.send = function (payload) {
|
||||
* @param {Function} callback triggered on end with (err, result)
|
||||
*/
|
||||
HttpProvider.prototype.sendAsync = function (payload, callback) {
|
||||
var request = this.prepareRequest(true);
|
||||
var request = this.prepareRequest(true)
|
||||
|
||||
request.onreadystatechange = function() {
|
||||
if (request.readyState === 4 && request.timeout !== 1) {
|
||||
var result = request.responseText;
|
||||
var error = null;
|
||||
request.onreadystatechange = function () {
|
||||
if (request.readyState === 4 && request.timeout !== 1) {
|
||||
var result = request.responseText
|
||||
var error = null
|
||||
|
||||
try {
|
||||
result = JSON.parse(result);
|
||||
} catch(e) {
|
||||
error = errors.InvalidResponse(request.responseText);
|
||||
}
|
||||
try {
|
||||
result = JSON.parse(result)
|
||||
} catch (e) {
|
||||
error = errors.InvalidResponse(request.responseText)
|
||||
}
|
||||
|
||||
callback(error, result);
|
||||
}
|
||||
};
|
||||
|
||||
request.ontimeout = function() {
|
||||
callback(errors.ConnectionTimeout(this.timeout));
|
||||
};
|
||||
|
||||
try {
|
||||
request.send(JSON.stringify(payload));
|
||||
} catch(error) {
|
||||
callback(errors.InvalidConnection(this.host));
|
||||
callback(error, result)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
request.ontimeout = function () {
|
||||
callback(errors.ConnectionTimeout(this.timeout))
|
||||
}
|
||||
|
||||
try {
|
||||
request.send(JSON.stringify(payload))
|
||||
} catch (error) {
|
||||
callback(errors.InvalidConnection(this.host))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Synchronously tries to make Http request
|
||||
@ -143,18 +137,18 @@ HttpProvider.prototype.sendAsync = function (payload, callback) {
|
||||
* @method isConnected
|
||||
* @return {Boolean} returns true if request haven't failed. Otherwise false
|
||||
*/
|
||||
HttpProvider.prototype.isConnected = function() {
|
||||
try {
|
||||
this.send({
|
||||
id: 9999999999,
|
||||
jsonrpc: '2.0',
|
||||
method: 'net_listening',
|
||||
params: []
|
||||
});
|
||||
return true;
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
HttpProvider.prototype.isConnected = function () {
|
||||
try {
|
||||
this.send({
|
||||
id: 9999999999,
|
||||
jsonrpc: '2.0',
|
||||
method: 'net_listening',
|
||||
params: []
|
||||
})
|
||||
return true
|
||||
} catch (e) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = HttpProvider;
|
||||
module.exports = HttpProvider
|
||||
|
@ -8,7 +8,6 @@
|
||||
"lib": "./lib"
|
||||
},
|
||||
"dependencies": {
|
||||
"btoa": "^1.1.2",
|
||||
"bignumber.js": "git+https://github.com/frozeman/bignumber.js-nolookahead.git",
|
||||
"crypto-js": "^3.1.4",
|
||||
"utf8": "^2.1.1",
|
||||
|
Loading…
x
Reference in New Issue
Block a user