package binance import ( "context" "net/url" "strconv" "cryptoHermes/internal/entity" ) func (c *Client) GetKlines(ctx context.Context, symbol, interval string, limit int) ([]entity.Kline, error) { return c.GetKlinesRange(ctx, symbol, interval, 0, 0, limit) } func (c *Client) GetKlinesRange(ctx context.Context, symbol, interval string, startMs, endMs int64, limit int) ([]entity.Kline, error) { if limit <= 0 { limit = 500 } if limit > 1500 { limit = 1500 } q := url.Values{} q.Set("symbol", symbol) q.Set("interval", interval) q.Set("limit", strconv.Itoa(limit)) if startMs > 0 { q.Set("startTime", strconv.FormatInt(startMs, 10)) } if endMs > 0 { q.Set("endTime", strconv.FormatInt(endMs, 10)) } var raw [][]any if err := c.get(ctx, "/fapi/v1/klines", q, &raw); err != nil { return nil, err } out := make([]entity.Kline, 0, len(raw)) for _, row := range raw { k, err := parseKlineRow(symbol, interval, row) if err != nil { return nil, err } out = append(out, k) } return out, nil } func (c *Client) GetTicker24h(ctx context.Context, symbol string) (*entity.Ticker24h, error) { q := url.Values{} q.Set("symbol", symbol) var dto tickerDTO if err := c.get(ctx, "/fapi/v1/ticker/24hr", q, &dto); err != nil { return nil, err } return mapTicker(&dto), nil }