Files
cryptoHermes/internal/repo/webapi/coinglass/liq_heatmap.go
dela 1b61541ff5
Some checks failed
ci / build + vet + guard + race (push) Has been cancelled
feat: 接入 CoinGlass 清算热力图隔离链路
2026-05-25 16:57:22 +08:00

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_")
}