mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 15:09:42 +00:00
gateio: Fix futures subscription generation (#1725)
* gateio/websocket: fix futures filtering when generating subscriptions * rework test * gk: nits --------- Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
This commit is contained in:
@@ -2877,13 +2877,14 @@ func TestGenerateDeliveryFuturesDefaultSubscriptions(t *testing.T) {
|
||||
}
|
||||
func TestGenerateFuturesDefaultSubscriptions(t *testing.T) {
|
||||
t.Parallel()
|
||||
if _, err := g.GenerateFuturesDefaultSubscriptions(currency.USDT); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if _, err := g.GenerateFuturesDefaultSubscriptions(currency.BTC); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
subs, err := g.GenerateFuturesDefaultSubscriptions(currency.USDT)
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, subs)
|
||||
subs, err = g.GenerateFuturesDefaultSubscriptions(currency.BTC)
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, subs)
|
||||
_, err = g.GenerateFuturesDefaultSubscriptions(currency.TABOO)
|
||||
require.Error(t, err)
|
||||
}
|
||||
func TestGenerateOptionsDefaultSubscriptions(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"slices"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -88,11 +89,7 @@ func (g *Gateio) WsFuturesConnect(ctx context.Context, conn stream.Connection) e
|
||||
func (g *Gateio) GenerateFuturesDefaultSubscriptions(settlement currency.Code) (subscription.List, error) {
|
||||
channelsToSubscribe := defaultFuturesSubscriptions
|
||||
if g.Websocket.CanUseAuthenticatedEndpoints() {
|
||||
channelsToSubscribe = append(channelsToSubscribe,
|
||||
futuresOrdersChannel,
|
||||
futuresUserTradesChannel,
|
||||
futuresBalancesChannel,
|
||||
)
|
||||
channelsToSubscribe = append(channelsToSubscribe, futuresOrdersChannel, futuresUserTradesChannel, futuresBalancesChannel)
|
||||
}
|
||||
|
||||
pairs, err := g.GetEnabledPairs(asset.Futures)
|
||||
@@ -103,28 +100,17 @@ func (g *Gateio) GenerateFuturesDefaultSubscriptions(settlement currency.Code) (
|
||||
return nil, err
|
||||
}
|
||||
|
||||
switch {
|
||||
case settlement.Equal(currency.USDT):
|
||||
pairs = slices.DeleteFunc(pairs, func(p currency.Pair) bool { return !p.Quote.Equal(currency.USDT) })
|
||||
case settlement.Equal(currency.BTC):
|
||||
pairs = slices.DeleteFunc(pairs, func(p currency.Pair) bool { return p.Quote.Equal(currency.USDT) })
|
||||
default:
|
||||
return nil, fmt.Errorf("settlement currency %s not supported", settlement)
|
||||
}
|
||||
|
||||
var subscriptions subscription.List
|
||||
for i := range channelsToSubscribe {
|
||||
switch {
|
||||
case settlement.Equal(currency.USDT):
|
||||
pairs, err = pairs.GetPairsByQuote(currency.USDT)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case settlement.Equal(currency.BTC):
|
||||
offset := 0
|
||||
for x := range pairs {
|
||||
if pairs[x].Quote.Equal(currency.USDT) {
|
||||
continue // skip USDT pairs
|
||||
}
|
||||
pairs[offset] = pairs[x]
|
||||
offset++
|
||||
}
|
||||
pairs = pairs[:offset]
|
||||
default:
|
||||
return nil, fmt.Errorf("settlement currency %s not supported", settlement)
|
||||
}
|
||||
|
||||
for j := range pairs {
|
||||
params := make(map[string]any)
|
||||
switch channelsToSubscribe[i] {
|
||||
|
||||
Reference in New Issue
Block a user