Skip to content

Commit 1d7cd29

Browse files
authored
add v5 public SubscribeKlines (#202)
1 parent 3458997 commit 1d7cd29

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

v5_ws_public.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ type V5WebsocketPublicServiceI interface {
3030
func(V5WebsocketPublicKlineResponse) error,
3131
) (func() error, error)
3232

33+
SubscribeKlines(
34+
keys []V5WebsocketPublicKlineParamKey,
35+
f func(V5WebsocketPublicKlineResponse) error,
36+
) (func() error, error)
37+
3338
SubscribeTicker(
3439
V5WebsocketPublicTickerParamKey,
3540
func(V5WebsocketPublicTickerResponse) error,

v5_ws_public_kline.go

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,41 @@ import (
99
"github.com/gorilla/websocket"
1010
)
1111

12+
// SubscribeKlines :
13+
func (s *V5WebsocketPublicService) SubscribeKlines(
14+
keys []V5WebsocketPublicKlineParamKey,
15+
f func(V5WebsocketPublicKlineResponse) error,
16+
) (func() error, error) {
17+
return s.subscribeKlines(keys, f)
18+
}
19+
1220
// SubscribeKline :
1321
func (s *V5WebsocketPublicService) SubscribeKline(
1422
key V5WebsocketPublicKlineParamKey,
1523
f func(V5WebsocketPublicKlineResponse) error,
1624
) (func() error, error) {
17-
if err := s.addParamKlineFunc(key, f); err != nil {
18-
return nil, err
25+
return s.subscribeKlines([]V5WebsocketPublicKlineParamKey{key}, f)
26+
}
27+
28+
func (s *V5WebsocketPublicService) subscribeKlines(
29+
keys []V5WebsocketPublicKlineParamKey,
30+
f func(V5WebsocketPublicKlineResponse) error,
31+
) (func() error, error) {
32+
var args []interface{}
33+
for _, key := range keys {
34+
if err := s.addParamKlineFunc(key, f); err != nil {
35+
return nil, err
36+
}
37+
38+
args = append(args, key.Topic())
1939
}
40+
2041
param := struct {
2142
Op string `json:"op"`
2243
Args []interface{} `json:"args"`
2344
}{
2445
Op: "subscribe",
25-
Args: []interface{}{key.Topic()},
46+
Args: args,
2647
}
2748
buf, err := json.Marshal(param)
2849
if err != nil {
@@ -37,7 +58,7 @@ func (s *V5WebsocketPublicService) SubscribeKline(
3758
Args []interface{} `json:"args"`
3859
}{
3960
Op: "unsubscribe",
40-
Args: []interface{}{key.Topic()},
61+
Args: args,
4162
}
4263
buf, err := json.Marshal(param)
4364
if err != nil {
@@ -46,7 +67,10 @@ func (s *V5WebsocketPublicService) SubscribeKline(
4667
if err := s.writeMessage(websocket.TextMessage, []byte(buf)); err != nil {
4768
return err
4869
}
49-
s.removeParamKlineFunc(key)
70+
71+
for _, key := range keys {
72+
s.removeParamKlineFunc(key)
73+
}
5074
return nil
5175
}, nil
5276
}

0 commit comments

Comments
 (0)