Merge pull request #38 from 67P/healthcheck
Extract healthcheck into its own class
This commit is contained in:
commit
ee886e6cd0
@ -1,6 +1,8 @@
|
||||
const ethers = require('ethers');
|
||||
const RSVP = require('rsvp');
|
||||
|
||||
const Healthcheck = require('./utils/healthcheck');
|
||||
|
||||
const ABIS = {
|
||||
Contributors: require('./abis/Contributors.json'),
|
||||
Operator: require('./abis/Operator.json'),
|
||||
@ -49,15 +51,9 @@ class Kredits {
|
||||
static setup(provider, signer, ipfsConfig = null) {
|
||||
console.log('Kredits.setup() is deprecated use new Kredits().init() instead');
|
||||
let ipfs = new IPFS(ipfsConfig);
|
||||
|
||||
return ipfs._ipfsAPI.id().catch((error) => {
|
||||
throw new Error(`IPFS node not available; config: ${JSON.stringify(ipfsConfig)} - ${error.message}`);
|
||||
}).then(() => {
|
||||
|
||||
return new Kredits(provider, signer).init().then((kredits) => {
|
||||
kredits.ipfs = ipfs;
|
||||
return kredits;
|
||||
});
|
||||
return new Kredits(provider, signer).init().then((kredits) => {
|
||||
kredits.ipfs = ipfs;
|
||||
return kredits;
|
||||
});
|
||||
}
|
||||
|
||||
@ -98,6 +94,10 @@ class Kredits {
|
||||
|
||||
return this.contracts[name];
|
||||
}
|
||||
|
||||
healthcheck() {
|
||||
return new Healthcheck(this).check();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Kredits;
|
||||
|
28
lib/utils/healthcheck.js
Normal file
28
lib/utils/healthcheck.js
Normal file
@ -0,0 +1,28 @@
|
||||
class Healthcheck {
|
||||
constructor(kredits) {
|
||||
this.kredits = kredits;
|
||||
}
|
||||
|
||||
check() {
|
||||
return this.kredits.ipfs._ipfsAPI.id()
|
||||
.catch((error) => {
|
||||
throw new Error(`IPFS node not available; config: ${JSON.stringify(this.kredits.ipfs.config)} - ${error.message}`);
|
||||
})
|
||||
.then(() => {
|
||||
let promises = Object.keys(this.kredits.contracts).map((name) => {
|
||||
let contractWrapper = this.kredits.contracts[name];
|
||||
return this.kredits.provider.getCode(contractWrapper.contract.address).then((code) => {
|
||||
// not sure if we always get the same return value if the code is not available
|
||||
// so checking if it is < 5 long
|
||||
if (code === '0x00' || code.length < 5) {
|
||||
throw new Error(`Contract for: ${name} not found at ${contractWrapper.contract.address} on network ${this.kredits.provider.chainId}`);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
});
|
||||
return Promise.all(promises);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Healthcheck;
|
Loading…
x
Reference in New Issue
Block a user