forked from bnb-chain/go-sdk
/
client.go
45 lines (39 loc) · 1.11 KB
/
client.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package client
import (
resty "gopkg.in/resty.v1"
"github.com/cbarraford/go-sdk/client/basic"
"github.com/cbarraford/go-sdk/client/query"
"github.com/cbarraford/go-sdk/client/transaction"
"github.com/cbarraford/go-sdk/client/websocket"
"github.com/cbarraford/go-sdk/common/types"
"github.com/cbarraford/go-sdk/keys"
)
// dexClient wrapper
type dexClient struct {
query.QueryClient
websocket.WSClient
transaction.TransactionClient
basic.BasicClient
}
// DexClient methods
type DexClient interface {
basic.BasicClient
query.QueryClient
websocket.WSClient
transaction.TransactionClient
}
func init() {
resty.DefaultClient.SetRedirectPolicy(resty.FlexibleRedirectPolicy(10))
}
func NewDexClient(baseUrl string, network types.ChainNetwork, keyManager keys.KeyManager) (DexClient, error) {
types.Network = network
c := basic.NewClient(baseUrl)
w := websocket.NewClient(c)
q := query.NewClient(c)
n, err := q.GetNodeInfo()
if err != nil {
return nil, err
}
t := transaction.NewClient(n.NodeInfo.Network, keyManager, q, c)
return &dexClient{BasicClient: c, QueryClient: q, TransactionClient: t, WSClient: w}, nil
}