detect no node using request

This commit is contained in:
Jonathan Rainville 2018-05-18 14:58:05 -04:00
parent d1c3f36d02
commit aea270af02
2 changed files with 33 additions and 3 deletions

View File

@ -1,4 +1,5 @@
const Web3 = require('web3');
const Provider = require('./provider.js');
class Blockchain {
constructor(options) {
@ -10,6 +11,8 @@ class Blockchain {
this.web3 = options.web3;
this.addCheck = options.addCheck;
this.isWeb3Started = false;
if (!this.web3) {
this.initWeb3();
}
@ -19,10 +22,25 @@ class Blockchain {
}
initWeb3() {
const self = this;
this.web3 = new Web3();
if (this.contractsConfig.deployment.type === "rpc") {
let web3Endpoint = 'http://' + this.contractsConfig.deployment.host + ':' + this.contractsConfig.deployment.port;
this.web3.setProvider(new this.web3.providers.HttpProvider(web3Endpoint));
let provider;
let web3Endpoint = 'http://' + this.contractsConfig.deployment.host + ':' + this.contractsConfig.deployment.port;
const providerOptions = {
web3: this.web3,
accountsConfig: this.contractsConfig.deployment.accounts,
logger: this.logger,
isDev: this.isDev,
web3Endpoint
};
provider = new Provider(providerOptions);
provider.startWeb3Provider(() => {
self.isWeb3Started = true;
});
} else {
throw new Error("contracts config error: unknown deployment type " + this.contractsConfig.deployment.type);
}
@ -133,13 +151,22 @@ class Blockchain {
return cb(Error("error connecting to blockchain node"));
}
self.getAccounts(function(err, _accounts) {
// TODO: refactor this
request.get(web3Endpoint, function (err, _response, _body) {
if (err) {
self.logger.error(("Couldn't connect to an Ethereum node are you sure it's on?").red);
self.logger.info("make sure you have an Ethereum node or simulator running. e.g 'embark blockchain'".magenta);
return cb(Error("error connecting to blockchain node"));
}
return cb();
self.getAccounts(function(err, _accounts) {
if (err) {
self.logger.error(("Couldn't connect to an Ethereum node are you sure it's on?").red);
self.logger.info("make sure you have an Ethereum node or simulator running. e.g 'embark blockchain'".magenta);
return cb(Error("error connecting to blockchain node"));
}
return cb();
});
});
}

View File

@ -13,6 +13,8 @@ const Pipeline = require('../pipeline/pipeline.js');
const Watch = require('../pipeline/watch.js');
const LibraryManager = require('../versions/library_manager.js');
const CodeRunner = require('../coderunner/codeRunner.js');
const request = require('request');
//const Provider = require('../contracts/provider');
class Engine {
constructor(options) {
@ -304,6 +306,7 @@ class Engine {
addCheck: this.servicesMonitor.addCheck.bind(this.servicesMonitor),
events: this.events,
logger: this.logger,
isDev: this.isDev,
web3: options.web3
});