Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add missing services and properties #338

Merged
merged 9 commits into from Jan 21, 2022
4 changes: 3 additions & 1 deletion v2/asset_dividend_service.go
Expand Up @@ -76,11 +76,13 @@ func (s *AssetDividendService) Do(ctx context.Context) (*DividendResponseWrapper

// DividendResponseWrapper represents a wrapper around a AssetDividendService.
type DividendResponseWrapper struct {
Rows *[]DividendResponse `json:"rows"`
Rows *[]DividendResponse `json:"rows"`
Total int32 `json:"total"`
}

// DividendResponse represents a response from AssetDividendService.
type DividendResponse struct {
ID int64 `json:"id"`
Amount string `json:"amount"`
Asset string `json:"asset"`
Info string `json:"enInfo"`
Expand Down
8 changes: 7 additions & 1 deletion v2/asset_dividend_service_test.go
Expand Up @@ -20,13 +20,15 @@ func (s *assetDividendServiceTestSuite) TestListAssetDividend() {
{
"rows":[
{
"id":1637366104,
"amount":"10.00000000",
"asset":"BHFT",
"divTime":1563189166000,
"enInfo":"BHFT distribution",
"tranId":2968885920
},
{
"id":1631750237,
"amount":"10.00000000",
"asset":"BHFT",
"divTime":1563189165000,
Expand Down Expand Up @@ -65,24 +67,28 @@ func (s *assetDividendServiceTestSuite) TestListAssetDividend() {

s.Len(rows, 2)
s.assertDividendEqual(&DividendResponse{
ID: 1637366104,
Amount: `10.00000000`,
Asset: `BHFT`,
Time: 1563189166000,
Info: `BHFT distribution`,
TranID: 2968885920,
}, &rows[0])
s.assertDividendEqual(&DividendResponse{
ID: 1631750237,
Amount: `10.00000000`,
Asset: `BHFT`,
Time: 1563189165000,
Info: `BHFT distribution`,
TranID: 2968885920,
}, &rows[1])
s.Equal(int32(2), dividend.Total, `Total`)
}

func (s *assetDividendServiceTestSuite) assertDividendEqual(e, a *DividendResponse) {
r := s.r()
r.Equal(e.Amount, `10.00000000`, `Amount`)
r.Equal(e.ID, a.ID, `ID`)
r.Equal(e.Amount, a.Amount, `Amount`)
r.Equal(e.Amount, a.Amount, `Amount`)
r.Equal(e.Info, a.Info, `Info`)
r.Equal(e.Asset, a.Asset, `Asset`)
Expand Down
10 changes: 10 additions & 0 deletions v2/client.go
Expand Up @@ -695,3 +695,13 @@ func (c *Client) NewFiatDepositWithdrawHistoryService() *FiatDepositWithdrawHist
func (c *Client) NewFiatPaymentsHistoryService() *FiatPaymentsHistoryService {
return &FiatPaymentsHistoryService{c: c}
}

// NewFiatPaymentsHistoryService init the spot rebate history service
func (c *Client) NewSpotRebateHistoryService() *SpotRebateHistoryService {
return &SpotRebateHistoryService{c: c}
}

// NewConvertTradeHistoryService init the convert trade history service
func (c *Client) NewConvertTradeHistoryService() *ConvertTradeHistoryService {
return &ConvertTradeHistoryService{c: c}
}
1 change: 1 addition & 0 deletions v2/client_test.go
Expand Up @@ -151,6 +151,7 @@ func (s *baseTestSuite) assertTradeV3Equal(e, a *TradeV3) {
r.Equal(e.ID, a.ID, "ID")
r.Equal(e.Symbol, a.Symbol, "Symbol")
r.Equal(e.OrderID, a.OrderID, "OrderID")
r.Equal(e.OrderListId, a.OrderListId, "OrderListId")
r.Equal(e.Price, a.Price, "Price")
r.Equal(e.Quantity, a.Quantity, "Quantity")
r.Equal(e.QuoteQuantity, a.QuoteQuantity, "QuoteQuantity")
Expand Down
78 changes: 78 additions & 0 deletions v2/convert_trade.go
@@ -0,0 +1,78 @@
package binance

import (
"context"
"encoding/json"
"net/http"
)

type ConvertTradeHistoryService struct {
c *Client
startTime int64
endTime int64
limit *int32
}

// StartTime set startTime
func (s *ConvertTradeHistoryService) StartTime(startTime int64) *ConvertTradeHistoryService {
s.startTime = startTime
return s
}

// EndTime set endTime
func (s *ConvertTradeHistoryService) EndTime(endTime int64) *ConvertTradeHistoryService {
s.endTime = endTime
return s
}

// Limit set limit
func (s *ConvertTradeHistoryService) Limit(limit int32) *ConvertTradeHistoryService {
s.limit = &limit
return s
}

// Do send request
func (s *ConvertTradeHistoryService) Do(ctx context.Context, opts ...RequestOption) (*ConvertTradeHistory, error) {
r := &request{
method: http.MethodGet,
endpoint: "/sapi/v1/convert/tradeFlow",
secType: secTypeSigned,
}
r.setParam("startTime", s.startTime)
r.setParam("endTime", s.endTime)
if s.limit != nil {
r.setParam("limit", *s.limit)
}
data, err := s.c.callAPI(ctx, r, opts...)
if err != nil {
return nil, err
}
res := ConvertTradeHistory{}
if err = json.Unmarshal(data, &res); err != nil {
return nil, err
}
return &res, nil
}

// ConvertTradeHistory define the convert trade history
type ConvertTradeHistory struct {
List []ConvertTradeHistoryItem `json:"list"`
StartTime int64 `json:"startTime"`
EndTime int64 `json:"endTime"`
Limit int32 `json:"limit"`
MoreData bool `json:"moreData"`
}

// ConvertTradeHistoryItem define a convert trade history item
type ConvertTradeHistoryItem struct {
QuoteId string `json:"quoteId"`
OrderId int64 `json:"orderId"`
OrderStatus string `json:"orderStatus"`
FromAsset string `json:"fromAsset"`
FromAmount string `json:"fromAmount"`
ToAsset string `json:"toAsset"`
ToAmount string `json:"toAmount"`
Ratio string `json:"ratio"`
InverseRatio string `json:"inverseRatio"`
CreateTime int64 `json:"createTime"`
}
105 changes: 105 additions & 0 deletions v2/convert_trade_test.go
@@ -0,0 +1,105 @@
package binance

import (
"github.com/stretchr/testify/suite"
"testing"
"time"
)

type convertTradeTestSuite struct {
baseTestSuite
}

func TestConvertTradeService(t *testing.T) {
suite.Run(t, new(convertTradeTestSuite))
}

func (s *convertTradeTestSuite) TestConvertTradeHistory() {
data := []byte(`{
"list": [
{
"quoteId": "f3b91c525b2644c7bc1e1cd31b6e1aa6",
"orderId": 940708407462087195,
"orderStatus": "SUCCESS",
"fromAsset": "USDT",
"fromAmount": "20",
"toAsset": "BNB",
"toAmount": "0.06154036",
"ratio": "0.00307702",
"inverseRatio": "324.99",
"createTime": 1624248872184
}
],
"startTime": 1623824139000,
"endTime": 1626416139000,
"limit": 100,
"moreData": false
}`)
s.mockDo(data, nil)
defer s.assertDo()

startTime := time.Now().AddDate(0, 0, -7).Unix() * 1000
endTime := time.Now().Unix() * 1000
s.assertReq(func(r *request) {
e := newSignedRequest().setParams(params{
"startTime": startTime,
"endTime": endTime,
})
s.assertRequestEqual(e, r)
})

res, err := s.client.NewConvertTradeHistoryService().
StartTime(startTime).
EndTime(endTime).
Do(newContext())
s.r().NoError(err)
e := &ConvertTradeHistory{
List: []ConvertTradeHistoryItem{
{
QuoteId: "f3b91c525b2644c7bc1e1cd31b6e1aa6",
OrderId: 940708407462087195,
OrderStatus: "SUCCESS",
FromAsset: "USDT",
FromAmount: "20",
ToAsset: "BNB",
ToAmount: "0.06154036",
Ratio: "0.00307702",
InverseRatio: "324.99",
CreateTime: 1624248872184,
},
},
StartTime: 1623824139000,
EndTime: 1626416139000,
Limit: 100,
MoreData: false,
}
s.assertConvertTradeHistoryEqual(e, res)
}

func (s *convertTradeTestSuite) assertConvertTradeHistoryEqual(e, a *ConvertTradeHistory) {
r := s.r()

r.Len(a.List, len(e.List))
for i := 0; i < len(a.List); i++ {
s.assertConvertTradeHistoryItemEqual(&e.List[i], &a.List[i])
}

r.Equal(e.StartTime, a.StartTime, "StartTime")
r.Equal(e.EndTime, a.EndTime, "EndTime")
r.Equal(e.Limit, a.Limit, "Limit")
r.Equal(e.MoreData, a.MoreData, "MoreData")
}

func (s *convertTradeTestSuite) assertConvertTradeHistoryItemEqual(e, a *ConvertTradeHistoryItem) {
r := s.r()
r.Equal(e.QuoteId, a.QuoteId, "QuoteId")
r.Equal(e.OrderId, a.OrderId, "OrderId")
r.Equal(e.OrderStatus, a.OrderStatus, "OrderStatus")
r.Equal(e.FromAsset, a.FromAsset, "FromAsset")
r.Equal(e.FromAmount, a.FromAmount, "FromAmount")
r.Equal(e.ToAsset, a.ToAsset, "ToAsset")
r.Equal(e.ToAmount, a.ToAmount, "ToAmount")
r.Equal(e.Ratio, a.Ratio, "Ratio")
r.Equal(e.InverseRatio, a.InverseRatio, "InverseRatio")
r.Equal(e.CreateTime, a.CreateTime, "CreateTime")
}
21 changes: 11 additions & 10 deletions v2/deposit_service.go
Expand Up @@ -97,16 +97,17 @@ func (s *ListDepositsService) Do(ctx context.Context) (res []*Deposit, err error

// Deposit represents a single deposit entry.
type Deposit struct {
Amount string `json:"amount"`
Coin string `json:"coin"`
Network string `json:"network"`
Status int `json:"status"`
Address string `json:"address"`
AddressTag string `json:"addressTag"`
TxID string `json:"txId"`
InsertTime int64 `json:"insertTime"`
TransferType int64 `json:"transferType"`
ConfirmTimes string `json:"confirmTimes"`
Amount string `json:"amount"`
Coin string `json:"coin"`
Network string `json:"network"`
Status int `json:"status"`
Address string `json:"address"`
AddressTag string `json:"addressTag"`
TxID string `json:"txId"`
InsertTime int64 `json:"insertTime"`
TransferType int64 `json:"transferType"`
UnlockConfirm string `json:"unlockConfirm"`
ConfirmTimes string `json:"confirmTimes"`
}

// GetDepositsAddressService retrieves the details of a deposit address.
Expand Down
45 changes: 25 additions & 20 deletions v2/deposit_service_test.go
Expand Up @@ -26,6 +26,7 @@ func (s *depositServiceTestSuite) TestListDeposits() {
"txId":"0xaad4654a3234aa6118af9b4b335f5ae81c360b2394721c019b5d1e75328b09f3",
"insertTime":1599621997000,
"transferType":0,
"unlockConfirm":"12/12",
"confirmTimes":"12/12"
},
{
Expand All @@ -38,6 +39,7 @@ func (s *depositServiceTestSuite) TestListDeposits() {
"txId":"ESBFVQUTPIWQNJSPXFNHNYHSQNTGKRVKPRABQWTAXCDWOAKDKYWPTVG9BGXNVNKTLEJGESAVXIKIZ9999",
"insertTime":1599620082000,
"transferType":0,
"unlockConfirm":"1/12",
"confirmTimes":"1/1"
}
]`)
Expand Down Expand Up @@ -68,28 +70,30 @@ func (s *depositServiceTestSuite) TestListDeposits() {

r.Len(deposits, 2)
s.assertDepositEqual(&Deposit{
Amount: "0.00999800",
Coin: "PAXG",
Network: "ETH",
Status: 1,
Address: "0x788cabe9236ce061e5a892e1a59395a81fc8d62c",
AddressTag: "",
TxID: "0xaad4654a3234aa6118af9b4b335f5ae81c360b2394721c019b5d1e75328b09f3",
InsertTime: 1599621997000,
TransferType: 0,
ConfirmTimes: "12/12",
Amount: "0.00999800",
Coin: "PAXG",
Network: "ETH",
Status: 1,
Address: "0x788cabe9236ce061e5a892e1a59395a81fc8d62c",
AddressTag: "",
TxID: "0xaad4654a3234aa6118af9b4b335f5ae81c360b2394721c019b5d1e75328b09f3",
InsertTime: 1599621997000,
TransferType: 0,
UnlockConfirm: "12/12",
ConfirmTimes: "12/12",
}, deposits[0])
s.assertDepositEqual(&Deposit{
Amount: "0.50000000",
Coin: "IOTA",
Network: "IOTA",
Status: 1,
Address: "SIZ9VLMHWATXKV99LH99CIGFJFUMLEHGWVZVNNZXRJJVWBPHYWPPBOSDORZ9EQSHCZAMPVAPGFYQAUUV9DROOXJLNW",
AddressTag: "",
TxID: "ESBFVQUTPIWQNJSPXFNHNYHSQNTGKRVKPRABQWTAXCDWOAKDKYWPTVG9BGXNVNKTLEJGESAVXIKIZ9999",
InsertTime: 1599620082000,
TransferType: 0,
ConfirmTimes: "1/1",
Amount: "0.50000000",
Coin: "IOTA",
Network: "IOTA",
Status: 1,
Address: "SIZ9VLMHWATXKV99LH99CIGFJFUMLEHGWVZVNNZXRJJVWBPHYWPPBOSDORZ9EQSHCZAMPVAPGFYQAUUV9DROOXJLNW",
AddressTag: "",
TxID: "ESBFVQUTPIWQNJSPXFNHNYHSQNTGKRVKPRABQWTAXCDWOAKDKYWPTVG9BGXNVNKTLEJGESAVXIKIZ9999",
InsertTime: 1599620082000,
TransferType: 0,
UnlockConfirm: "1/12",
ConfirmTimes: "1/1",
}, deposits[1])
}

Expand All @@ -104,6 +108,7 @@ func (s *depositServiceTestSuite) assertDepositEqual(e, a *Deposit) {
r.Equal(e.TxID, a.TxID, "TxID")
r.Equal(e.InsertTime, a.InsertTime, "InsertTime")
r.Equal(e.TransferType, a.TransferType, "TransferType")
r.Equal(e.UnlockConfirm, a.UnlockConfirm, "UnlockConfirm")
r.Equal(e.ConfirmTimes, a.ConfirmTimes, "ConfirmTimes")
}

Expand Down
1 change: 1 addition & 0 deletions v2/order_service.go
Expand Up @@ -484,6 +484,7 @@ type Order struct {
UpdateTime int64 `json:"updateTime"`
IsWorking bool `json:"isWorking"`
IsIsolated bool `json:"isIsolated"`
OrigQuoteOrderQuantity string `json:"origQuoteOrderQty"`
}

// ListOrdersService all account orders; active, canceled, or filled
Expand Down