parent
2a42925399
commit
b7f8657ab5
@ -0,0 +1,42 @@ |
||||
const ObservableStore = require('obs-store') |
||||
const extend = require('xtend') |
||||
|
||||
// every ten minutes
|
||||
const POLLING_INTERVAL = 300000 |
||||
|
||||
class InfuraController { |
||||
|
||||
constructor (opts = {}) { |
||||
const initState = extend({ |
||||
infuraNetworkStatus: {}, |
||||
}, opts.initState) |
||||
this.store = new ObservableStore(initState) |
||||
} |
||||
|
||||
//
|
||||
// PUBLIC METHODS
|
||||
//
|
||||
|
||||
// Responsible for retrieving the status of Infura's nodes. Can return either
|
||||
// ok, degraded, or down.
|
||||
checkInfuraNetworkStatus () { |
||||
return fetch('https://api.infura.io/v1/status/metamask') |
||||
.then(response => response.json()) |
||||
.then((parsedResponse) => { |
||||
this.store.updateState({ |
||||
infuraNetworkStatus: parsedResponse, |
||||
}) |
||||
}) |
||||
} |
||||
|
||||
scheduleInfuraNetworkCheck() { |
||||
if (this.conversionInterval) { |
||||
clearInterval(this.conversionInterval) |
||||
} |
||||
this.conversionInterval = setInterval(() => { |
||||
this.checkInfuraNetworkStatus() |
||||
}, POLLING_INTERVAL) |
||||
} |
||||
} |
||||
|
||||
module.exports = InfuraController |
Loading…
Reference in new issue