Skip to content

Commit

Permalink
Add missing services and properties (#338)
Browse files Browse the repository at this point in the history
* Added rebate service

* Added missing fields in asset dividende record response.

* Added convert trade service

* Fix asset dividend service tests

* Added missing property 'OrigQuoteOrderQuantity' in Order

* Added missing property 'OrderListId' in Trade

* Added missing property 'UnlockConfirm' in Deposit

* Added missing property 'ConfirmNo' in Withdraw

* Fixed unit test for Go 1.13
  • Loading branch information
pcasteran committed Jan 21, 2022
1 parent afa0336 commit e767ee6
Show file tree
Hide file tree
Showing 16 changed files with 462 additions and 48 deletions.
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

0 comments on commit e767ee6

Please sign in to comment.