1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00
squid-js/src/keeper/Web3Helper.ts

70 lines
1.9 KiB
TypeScript
Raw Normal View History

2018-10-04 13:14:03 +02:00
import * as Web3 from "web3"
2018-10-02 10:06:26 +02:00
import Config from "../models/Config"
2018-10-04 13:14:03 +02:00
import Logger from "../utils/Logger"
2018-10-04 16:17:32 +02:00
Logger.log("using web3", Web3.version)
2018-09-25 08:30:54 +02:00
2018-09-19 10:30:30 +02:00
export default class Web3Helper {
2018-10-02 10:06:26 +02:00
private web3: Web3
2018-09-25 08:30:54 +02:00
2018-09-25 09:14:01 +02:00
public constructor(config: Config) {
2018-10-02 10:06:26 +02:00
const web3Provider = config.web3Provider || new Web3.providers.HttpProvider(config.nodeUri)
2018-10-04 13:14:03 +02:00
this.web3 = new Web3(Web3.givenProvider || web3Provider)
2018-09-19 10:30:30 +02:00
}
public getWeb3() {
2018-10-02 10:06:26 +02:00
return this.web3
}
public getCurrentProvider() {
2018-10-02 10:06:26 +02:00
return this.web3.currentProvider
}
2018-09-25 09:14:01 +02:00
public async getAccounts(): Promise<any[]> {
return new Promise<any[]>((resolve, reject) => {
2018-09-25 08:30:54 +02:00
this.web3.eth.getAccounts((err: any, accounts: string[]) => {
if (err) {
2018-10-02 10:06:26 +02:00
reject(err)
throw err
}
2018-10-02 10:06:26 +02:00
resolve(accounts)
})
})
}
2018-09-25 09:14:01 +02:00
public async getNetworkName(): Promise<string> {
2018-10-05 10:59:48 +02:00
return this.web3.eth.net.getId()
.then((networkId) => {
let network: string = "unknown"
switch (networkId) {
case 1:
2018-10-02 10:06:26 +02:00
network = "Main"
break
case 2:
2018-10-02 10:06:26 +02:00
network = "Morden"
break
case 3:
2018-10-02 10:06:26 +02:00
network = "Ropsten"
break
case 4:
2018-10-02 10:06:26 +02:00
network = "Rinkeby"
break
case 42:
2018-10-02 10:06:26 +02:00
network = "Kovan"
break
default:
2018-10-02 10:06:26 +02:00
network = "development"
}
2018-10-05 10:59:48 +02:00
return network
2018-10-02 10:06:26 +02:00
})
2018-09-19 10:30:30 +02:00
}
// web3 wrappers
2018-09-25 09:14:01 +02:00
public sign(accountAddress: string, message: string) {
2018-10-02 10:06:26 +02:00
return this.web3.eth.sign(accountAddress, message)
2018-09-19 10:30:30 +02:00
}
2018-09-19 10:30:30 +02:00
}