From f99651e59e03711e71aec839e065f1cee84745c7 Mon Sep 17 00:00:00 2001 From: hirokisan Date: Wed, 8 Mar 2023 22:35:51 +0900 Subject: [PATCH] fix: explicitly state that it is int64 --- client.go | 32 +++++++++---------- future_common.go | 6 ++-- future_inverse_perpetual.go | 2 +- future_usdt_perpetual.go | 2 +- .../future_inverse_future_test.go | 6 ++-- .../future_inverse_perpetual_test.go | 8 ++--- .../future_usdt_perpetual_test.go | 2 +- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/client.go b/client.go index 60b769f..4348617 100644 --- a/client.go +++ b/client.go @@ -114,31 +114,25 @@ func (c *Client) hasAuth() bool { } func (c *Client) populateSignature(src url.Values) url.Values { - intNow := int(time.Now().UTC().UnixNano() / int64(time.Millisecond)) - now := strconv.Itoa(intNow) - if src == nil { src = url.Values{} } src.Add("api_key", c.key) - src.Add("timestamp", now) + src.Add("timestamp", strconv.FormatInt(c.getTimestamp(), 10)) src.Add("sign", getSignature(src, c.secret)) return src } func (c *Client) populateSignatureForBody(src []byte) []byte { - intNow := int(time.Now().UTC().UnixNano() / int64(time.Millisecond)) - now := strconv.Itoa(intNow) - body := map[string]interface{}{} if err := json.Unmarshal(src, &body); err != nil { panic(err) } body["api_key"] = c.key - body["timestamp"] = now + body["timestamp"] = strconv.FormatInt(c.getTimestamp(), 10) body["sign"] = getSignatureForBody(body, c.secret) result, err := json.Marshal(body) @@ -150,12 +144,12 @@ func (c *Client) populateSignatureForBody(src []byte) []byte { } func getV5Signature( - timestamp int, + timestamp int64, key string, queryString string, secret string, ) string { - val := strconv.Itoa(timestamp) + key + val := strconv.FormatInt(timestamp, 10) + key val = val + queryString h := hmac.New(sha256.New, []byte(secret)) h.Write([]byte(val)) @@ -163,12 +157,12 @@ func getV5Signature( } func getV5SignatureForBody( - timestamp int, + timestamp int64, key string, body []byte, secret string, ) string { - val := strconv.Itoa(timestamp) + key + val := strconv.FormatInt(timestamp, 10) + key val = val + string(body) h := hmac.New(sha256.New, []byte(secret)) h.Write([]byte(val)) @@ -276,7 +270,7 @@ func (c *Client) getV5Privately(path string, query url.Values, dst interface{}) u.Path = path u.RawQuery = query.Encode() - timestamp := int(time.Now().UTC().UnixNano() / int64(time.Millisecond)) + timestamp := c.getTimestamp() sign := getV5Signature(timestamp, c.key, query.Encode(), c.secret) req, err := http.NewRequest(http.MethodGet, u.String(), nil) @@ -284,7 +278,7 @@ func (c *Client) getV5Privately(path string, query url.Values, dst interface{}) return err } req.Header.Set("X-BAPI-API-KEY", c.key) - req.Header.Set("X-BAPI-TIMESTAMP", strconv.Itoa(timestamp)) + req.Header.Set("X-BAPI-TIMESTAMP", strconv.FormatInt(timestamp, 10)) req.Header.Set("X-BAPI-SIGN", sign) if err := c.Request(req, &dst); err != nil { @@ -331,7 +325,7 @@ func (c *Client) postV5JSON(path string, body []byte, dst interface{}) error { } u.Path = path - timestamp := int(time.Now().UTC().UnixNano() / int64(time.Millisecond)) + timestamp := c.getTimestamp() sign := getV5SignatureForBody(timestamp, c.key, body, c.secret) req, err := http.NewRequest(http.MethodPost, u.String(), bytes.NewBuffer(body)) @@ -340,7 +334,7 @@ func (c *Client) postV5JSON(path string, body []byte, dst interface{}) error { } req.Header.Set("Content-Type", "application/json") req.Header.Set("X-BAPI-API-KEY", c.key) - req.Header.Set("X-BAPI-TIMESTAMP", strconv.Itoa(timestamp)) + req.Header.Set("X-BAPI-TIMESTAMP", strconv.FormatInt(timestamp, 10)) req.Header.Set("X-BAPI-SIGN", sign) if err := c.Request(req, &dst); err != nil { @@ -403,3 +397,9 @@ func (c *Client) deletePrivately(path string, query url.Values, dst interface{}) return nil } + +func (c *Client) getTimestamp() int64 { + now := time.Now() + unixNano := now.UnixNano() + return unixNano / 1000000 +} diff --git a/future_common.go b/future_common.go index 6a3b7a7..2fd2ec3 100644 --- a/future_common.go +++ b/future_common.go @@ -136,7 +136,7 @@ func (s *FutureCommonService) OrderBook(symbol SymbolFuture) (*OrderBookResponse type ListKlineParam struct { Symbol SymbolFuture `url:"symbol"` Interval Interval `url:"interval"` - From int `url:"from"` + From int64 `url:"from"` Limit *int `url:"limit,omitempty"` } @@ -335,7 +335,7 @@ type MarkPriceKlineResult struct { type MarkPriceKlineParam struct { Symbol SymbolFuture `url:"symbol"` Interval Interval `url:"interval"` - From int `url:"from"` + From int64 `url:"from"` Limit *int `url:"limit,omitempty"` } @@ -377,7 +377,7 @@ type IndexPriceKlineResult struct { type IndexPriceKlineParam struct { Symbol SymbolFuture `url:"symbol"` Interval Interval `url:"interval"` - From int `url:"from"` + From int64 `url:"from"` Limit *int `url:"limit,omitempty"` } diff --git a/future_inverse_perpetual.go b/future_inverse_perpetual.go index 4915338..af18571 100644 --- a/future_inverse_perpetual.go +++ b/future_inverse_perpetual.go @@ -72,7 +72,7 @@ type PremiumIndexKlineResult struct { type PremiumIndexKlineParam struct { Symbol SymbolFuture `url:"symbol"` Interval Interval `url:"interval"` - From int `url:"from"` + From int64 `url:"from"` Limit *int `url:"limit,omitempty"` } diff --git a/future_usdt_perpetual.go b/future_usdt_perpetual.go index b03f274..848c2a3 100644 --- a/future_usdt_perpetual.go +++ b/future_usdt_perpetual.go @@ -53,7 +53,7 @@ type FutureUSDTPerpetualService struct { type ListLinearKlineParam struct { Symbol SymbolFuture `url:"symbol"` Interval Interval `url:"interval"` - From int `url:"from"` + From int64 `url:"from"` Limit *int `url:"limit,omitempty"` } diff --git a/integrationtest/future-inverse-future/future_inverse_future_test.go b/integrationtest/future-inverse-future/future_inverse_future_test.go index 9ff5e03..f9d0d9c 100644 --- a/integrationtest/future-inverse-future/future_inverse_future_test.go +++ b/integrationtest/future-inverse-future/future_inverse_future_test.go @@ -65,7 +65,7 @@ func TestListKline(t *testing.T) { res, err := client.Future().InverseFuture().ListKline(bybit.ListKlineParam{ Symbol: bybit.SymbolFutureBTCUSD, Interval: bybit.Interval120, - From: int(time.Now().AddDate(0, 0, -1).Unix()), + From: time.Now().AddDate(0, 0, -1).Unix(), }) require.NoError(t, err) { @@ -117,7 +117,7 @@ func TestMarkPriceKline(t *testing.T) { res, err := client.Future().InverseFuture().MarkPriceKline(bybit.MarkPriceKlineParam{ Symbol: bybit.SymbolFutureBTCUSD, Interval: bybit.IntervalD, - From: int(time.Now().AddDate(0, 0, -1).Unix()), + From: time.Now().AddDate(0, 0, -1).Unix(), }) require.NoError(t, err) { @@ -132,7 +132,7 @@ func TestIndexPriceKline(t *testing.T) { res, err := client.Future().InverseFuture().IndexPriceKline(bybit.IndexPriceKlineParam{ Symbol: bybit.SymbolFutureBTCUSD, Interval: bybit.IntervalD, - From: int(time.Now().AddDate(0, 0, -1).Unix()), + From: time.Now().AddDate(0, 0, -1).Unix(), }) require.NoError(t, err) { diff --git a/integrationtest/future-inverse-perpetual/future_inverse_perpetual_test.go b/integrationtest/future-inverse-perpetual/future_inverse_perpetual_test.go index 2b44ceb..ccce1fe 100644 --- a/integrationtest/future-inverse-perpetual/future_inverse_perpetual_test.go +++ b/integrationtest/future-inverse-perpetual/future_inverse_perpetual_test.go @@ -65,7 +65,7 @@ func TestListKline(t *testing.T) { res, err := client.Future().InversePerpetual().ListKline(bybit.ListKlineParam{ Symbol: bybit.SymbolFutureBTCUSD, Interval: bybit.Interval120, - From: int(time.Now().AddDate(0, 0, -1).Unix()), + From: time.Now().AddDate(0, 0, -1).Unix(), }) require.NoError(t, err) { @@ -117,7 +117,7 @@ func TestMarkPriceKline(t *testing.T) { res, err := client.Future().InverseFuture().MarkPriceKline(bybit.MarkPriceKlineParam{ Symbol: bybit.SymbolFutureBTCUSD, Interval: bybit.IntervalD, - From: int(time.Now().AddDate(0, 0, -1).Unix()), + From: time.Now().AddDate(0, 0, -1).Unix(), }) require.NoError(t, err) { @@ -132,7 +132,7 @@ func TestIndexPriceKline(t *testing.T) { res, err := client.Future().InversePerpetual().IndexPriceKline(bybit.IndexPriceKlineParam{ Symbol: bybit.SymbolFutureBTCUSD, Interval: bybit.IntervalD, - From: int(time.Now().AddDate(0, 0, -1).Unix()), + From: time.Now().AddDate(0, 0, -1).Unix(), }) require.NoError(t, err) { @@ -190,7 +190,7 @@ func TestPremiumIndexKline(t *testing.T) { res, err := client.Future().InversePerpetual().PremiumIndexKline(bybit.PremiumIndexKlineParam{ Symbol: bybit.SymbolFutureBTCUSD, Interval: bybit.Interval120, - From: int(time.Now().AddDate(0, 0, -1).Unix()), + From: time.Now().AddDate(0, 0, -1).Unix(), }) require.NoError(t, err) { diff --git a/integrationtest/future-usdt-perpetual/future_usdt_perpetual_test.go b/integrationtest/future-usdt-perpetual/future_usdt_perpetual_test.go index 5124f17..1d9fe8c 100644 --- a/integrationtest/future-usdt-perpetual/future_usdt_perpetual_test.go +++ b/integrationtest/future-usdt-perpetual/future_usdt_perpetual_test.go @@ -65,7 +65,7 @@ func TestListLinearKline(t *testing.T) { res, err := client.Future().USDTPerpetual().ListLinearKline(bybit.ListLinearKlineParam{ Symbol: bybit.SymbolFutureBTCUSDT, Interval: bybit.Interval120, - From: int(time.Now().AddDate(0, 0, -1).Unix()), + From: time.Now().AddDate(0, 0, -1).Unix(), }) require.NoError(t, err) {