forked from cerc-io/ipld-eth-server
51 lines
1.7 KiB
Go
51 lines
1.7 KiB
Go
package serve
|
|
|
|
import (
|
|
"github.com/ethereum/go-ethereum/rpc"
|
|
"github.com/ethereum/go-ethereum/statediff/indexer/node"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
// Env variables
|
|
const (
|
|
HTTP_TIMEOUT = "HTTP_TIMEOUT"
|
|
|
|
ETH_WS_PATH = "ETH_WS_PATH"
|
|
ETH_HTTP_PATH = "ETH_HTTP_PATH"
|
|
ETH_NODE_ID = "ETH_NODE_ID"
|
|
ETH_CLIENT_NAME = "ETH_CLIENT_NAME"
|
|
ETH_GENESIS_BLOCK = "ETH_GENESIS_BLOCK"
|
|
ETH_NETWORK_ID = "ETH_NETWORK_ID"
|
|
ETH_CHAIN_ID = "ETH_CHAIN_ID"
|
|
|
|
DATABASE_NAME = "DATABASE_NAME"
|
|
DATABASE_HOSTNAME = "DATABASE_HOSTNAME"
|
|
DATABASE_PORT = "DATABASE_PORT"
|
|
DATABASE_USER = "DATABASE_USER"
|
|
DATABASE_PASSWORD = "DATABASE_PASSWORD"
|
|
DATABASE_MAX_IDLE_CONNECTIONS = "DATABASE_MAX_IDLE_CONNECTIONS"
|
|
DATABASE_MAX_OPEN_CONNECTIONS = "DATABASE_MAX_OPEN_CONNECTIONS"
|
|
DATABASE_MAX_CONN_LIFETIME = "DATABASE_MAX_CONN_LIFETIME"
|
|
)
|
|
|
|
// GetEthNodeAndClient returns eth node info and client from path url
|
|
func getEthNodeAndClient(path string) (node.Info, *rpc.Client, error) {
|
|
viper.BindEnv("ethereum.nodeID", ETH_NODE_ID)
|
|
viper.BindEnv("ethereum.clientName", ETH_CLIENT_NAME)
|
|
viper.BindEnv("ethereum.genesisBlock", ETH_GENESIS_BLOCK)
|
|
viper.BindEnv("ethereum.networkID", ETH_NETWORK_ID)
|
|
viper.BindEnv("ethereum.chainID", ETH_CHAIN_ID)
|
|
|
|
rpcClient, err := rpc.Dial(path)
|
|
if err != nil {
|
|
return node.Info{}, nil, err
|
|
}
|
|
return node.Info{
|
|
ID: viper.GetString("ethereum.nodeID"),
|
|
ClientName: viper.GetString("ethereum.clientName"),
|
|
GenesisBlock: viper.GetString("ethereum.genesisBlock"),
|
|
NetworkID: viper.GetString("ethereum.networkID"),
|
|
ChainID: viper.GetUint64("ethereum.chainID"),
|
|
}, rpcClient, nil
|
|
}
|