53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
package coinglass
|
|
|
|
import (
|
|
"context"
|
|
"net/url"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"cryptoHermes/internal/entity"
|
|
)
|
|
|
|
const (
|
|
liqHeatMapPath = "/api/index/v2/liqHeatMap"
|
|
defaultLiqInterval = "5"
|
|
defaultLiqLimit = 288
|
|
maxLiqHeatMapLimit = 1000
|
|
cgBinanceSymbolPrefix = "Binance_"
|
|
)
|
|
|
|
func (c *Client) GetLiqHeatMap(ctx context.Context, symbol, interval string, limit int) (*entity.CGLiqHeatMap, error) {
|
|
symbol = normalizeBinanceMarketSymbol(symbol)
|
|
if interval == "" {
|
|
interval = defaultLiqInterval
|
|
}
|
|
if limit <= 0 {
|
|
limit = defaultLiqLimit
|
|
}
|
|
if limit > maxLiqHeatMapLimit {
|
|
limit = maxLiqHeatMapLimit
|
|
}
|
|
|
|
q := url.Values{}
|
|
q.Set("merge", "true")
|
|
q.Set("symbol", coinglassBinanceSymbol(symbol))
|
|
q.Set("interval", interval)
|
|
q.Set("limit", strconv.Itoa(limit))
|
|
|
|
plaintext, err := c.GetPlaintext(ctx, liqHeatMapPath, q)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return MapLiqHeatMap(symbol, interval, c.now().UnixMilli(), plaintext)
|
|
}
|
|
|
|
func coinglassBinanceSymbol(symbol string) string {
|
|
return cgBinanceSymbolPrefix + symbol
|
|
}
|
|
|
|
func normalizeBinanceMarketSymbol(symbol string) string {
|
|
symbol = strings.ToUpper(strings.TrimSpace(symbol))
|
|
return strings.TrimPrefix(symbol, "BINANCE_")
|
|
}
|