Put rpc config to external file
This commit is contained in:
parent
f336217c1d
commit
971b6397d6
@ -4,9 +4,11 @@ import (
|
|||||||
"blockbook/bchain"
|
"blockbook/bchain"
|
||||||
"blockbook/common"
|
"blockbook/common"
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
"github.com/juju/errors"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/ethclient"
|
"github.com/ethereum/go-ethereum/ethclient"
|
||||||
)
|
)
|
||||||
@ -24,25 +26,36 @@ type EthRPC struct {
|
|||||||
metrics *common.Metrics
|
metrics *common.Metrics
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type configuration struct {
|
||||||
|
RPCURL string `json:"rpcURL"`
|
||||||
|
RPCTimeout int `json:"rpcTimeout"`
|
||||||
|
}
|
||||||
|
|
||||||
// NewEthRPC returns new EthRPC instance.
|
// NewEthRPC returns new EthRPC instance.
|
||||||
func NewEthRPC(url string, user string, password string, timeout time.Duration, parse bool, metrics *common.Metrics) (bchain.BlockChain, error) {
|
func NewEthRPC(config json.RawMessage, pushHandler func(*bchain.MQMessage), metrics *common.Metrics) (bchain.BlockChain, error) {
|
||||||
c, err := ethclient.Dial(url)
|
var err error
|
||||||
|
var c configuration
|
||||||
|
err = json.Unmarshal(config, &c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Annotatef(err, "Invalid configuration file")
|
||||||
|
}
|
||||||
|
ec, err := ethclient.Dial(c.RPCURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), timeout)
|
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(c.RPCTimeout)*time.Second)
|
||||||
s := &EthRPC{
|
s := &EthRPC{
|
||||||
client: c,
|
client: ec,
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
ctxCancel: cancel,
|
ctxCancel: cancel,
|
||||||
rpcURL: url,
|
rpcURL: c.RPCURL,
|
||||||
metrics: metrics,
|
metrics: metrics,
|
||||||
}
|
}
|
||||||
|
|
||||||
// always create parser
|
// always create parser
|
||||||
s.Parser = &EthParser{}
|
s.Parser = &EthParser{}
|
||||||
|
|
||||||
h, err := c.HeaderByNumber(s.ctx, nil)
|
h, err := ec.HeaderByNumber(s.ctx, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -63,6 +76,13 @@ func NewEthRPC(url string, user string, password string, timeout time.Duration,
|
|||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *EthRPC) Shutdown() error {
|
||||||
|
if b.ctxCancel != nil {
|
||||||
|
b.ctxCancel()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (b *EthRPC) IsTestnet() bool {
|
func (b *EthRPC) IsTestnet() bool {
|
||||||
panic("not implemented")
|
panic("not implemented")
|
||||||
}
|
}
|
||||||
|
|||||||
4
configs/eth-testnet.json
Normal file
4
configs/eth-testnet.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"rpcURL": "ws://10.34.3.4:18546",
|
||||||
|
"rpcTimeout": 25
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user