Skip to content

Commit 639815a

Browse files
authored
Merge pull request #599 from 0x0001/master
add fee burn service
2 parents 5905362 + 2ac2df0 commit 639815a

File tree

3 files changed

+146
-0
lines changed

3 files changed

+146
-0
lines changed

v2/futures/client.go

+8
Original file line numberDiff line numberDiff line change
@@ -671,3 +671,11 @@ func (c *Client) NewConstituentsService() *ConstituentsService {
671671
func (c *Client) NewLvtKlinesService() *LvtKlinesService {
672672
return &LvtKlinesService{c: c}
673673
}
674+
675+
func (c *Client) NewGetFeeBurnService() *GetFeeBurnService {
676+
return &GetFeeBurnService{c: c}
677+
}
678+
679+
func (c *Client) NewFeeBurnService() *FeeBurnService {
680+
return &FeeBurnService{c: c}
681+
}

v2/futures/fee_burn_service.go

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package futures
2+
3+
import (
4+
"context"
5+
"encoding/json"
6+
"fmt"
7+
"net/http"
8+
)
9+
10+
// FeeBurnService set fee burn info
11+
type FeeBurnService struct {
12+
c *Client
13+
feeBurn string
14+
}
15+
16+
func (f *FeeBurnService) Enable() *FeeBurnService {
17+
f.feeBurn = "true"
18+
return f
19+
}
20+
21+
func (f *FeeBurnService) Disable() *FeeBurnService {
22+
f.feeBurn = "false"
23+
return f
24+
}
25+
26+
// Do send request
27+
func (s *FeeBurnService) Do(ctx context.Context, opts ...RequestOption) (err error) {
28+
r := &request{
29+
method: http.MethodPost,
30+
endpoint: "/fapi/v1/feeBurn",
31+
secType: secTypeSigned,
32+
}
33+
m := params{
34+
"feeBurn": s.feeBurn,
35+
}
36+
r.setFormParams(m)
37+
data, _, err := s.c.callAPI(ctx, r, opts...)
38+
if err != nil {
39+
return err
40+
}
41+
j, err := newJSON(data)
42+
if err != nil {
43+
return err
44+
}
45+
msg, err := j.Get("msg").String()
46+
if err != nil {
47+
return err
48+
}
49+
if msg != "success" {
50+
code, _ := j.Get("code").Int()
51+
return fmt.Errorf("code: %d, msg: %s", code, msg)
52+
}
53+
return nil
54+
}
55+
56+
// GetFeeBurnService get fee burn info
57+
type GetFeeBurnService struct {
58+
c *Client
59+
}
60+
61+
// Do send request
62+
func (s *GetFeeBurnService) Do(ctx context.Context, opts ...RequestOption) (res *FeeBurn, err error) {
63+
r := &request{
64+
method: http.MethodGet,
65+
endpoint: "/fapi/v1/feeBurn",
66+
secType: secTypeSigned,
67+
}
68+
data, _, err := s.c.callAPI(ctx, r, opts...)
69+
if err != nil {
70+
return nil, err
71+
}
72+
res = new(FeeBurn)
73+
err = json.Unmarshal(data, res)
74+
if err != nil {
75+
return nil, err
76+
}
77+
78+
return res, nil
79+
}
80+
81+
type FeeBurn struct {
82+
FeeBurn bool `json:"feeBurn"`
83+
}

v2/futures/fee_burn_service_test.go

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package futures
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/suite"
7+
)
8+
9+
type feeburnServiceTestSuite struct {
10+
baseTestSuite
11+
}
12+
13+
func TestFeeBurnService(t *testing.T) {
14+
suite.Run(t, new(feeburnServiceTestSuite))
15+
}
16+
17+
func (s *feeburnServiceTestSuite) TestGetFeeBurn() {
18+
data := []byte(`{"feeBurn": true}`)
19+
s.mockDo(data, nil)
20+
defer s.assertDo()
21+
s.assertReq(func(r *request) {
22+
e := newSignedRequest()
23+
s.assertRequestEqual(e, r)
24+
})
25+
26+
res, err := s.client.NewGetFeeBurnService().Do(newContext())
27+
s.r().NoError(err)
28+
s.r().True(res.FeeBurn)
29+
}
30+
31+
func (s *feeburnServiceTestSuite) TestFeeBurnEnable() {
32+
data := []byte(`{"msg": "success"}`)
33+
s.mockDo(data, nil)
34+
defer s.assertDo()
35+
s.assertReq(func(r *request) {
36+
e := newSignedRequest().setFormParam("feeBurn", "true")
37+
s.assertRequestEqual(e, r)
38+
})
39+
40+
err := s.client.NewFeeBurnService().Enable().Do(newContext())
41+
s.r().NoError(err)
42+
}
43+
44+
func (s *feeburnServiceTestSuite) TestFeeBurnDisable() {
45+
data := []byte(`{"msg": "success"}`)
46+
s.mockDo(data, nil)
47+
defer s.assertDo()
48+
s.assertReq(func(r *request) {
49+
e := newSignedRequest().setFormParam("feeBurn", "false")
50+
s.assertRequestEqual(e, r)
51+
})
52+
53+
err := s.client.NewFeeBurnService().Disable().Do(newContext())
54+
s.r().NoError(err)
55+
}

0 commit comments

Comments
 (0)