Skip to content

Commit 11d2fa3

Browse files
committed
feat: implements locked/setRedeemOption
1 parent a1cd14f commit 11d2fa3

File tree

3 files changed

+79
-0
lines changed

3 files changed

+79
-0
lines changed

v2/client.go

+3
Original file line numberDiff line numberDiff line change
@@ -1416,5 +1416,8 @@ func (c *Client) NewSimpleEarnSubscriptionPreviewService() *SimpleEarnSubscripti
14161416
func (c *Client) NewSimpleEarnLockedSubscriptionPreviewService() *SimpleEarnLockedSubscriptionPreviewService {
14171417
return &SimpleEarnLockedSubscriptionPreviewService{c: c}
14181418
}
1419+
func (c *Client) NewSimpleEarnSetRedeemOptionService() *SimpleEarnSetRedeemOptionService {
1420+
return &SimpleEarnSetRedeemOptionService{c: c}
1421+
}
14191422

14201423
// ----- end simple earn service -----

v2/simple_earn_service.go

+53
Original file line numberDiff line numberDiff line change
@@ -901,3 +901,56 @@ func (s *SimpleEarnLockedSubscriptionPreviewService) Do(ctx context.Context, opt
901901
}
902902
return res, nil
903903
}
904+
905+
type RedeemTo string
906+
907+
const (
908+
RedeemToSpot RedeemTo = "SPOT"
909+
RedeemToFlexible RedeemTo = "FLEXIBLE"
910+
)
911+
912+
type SimpleEarnSetRedeemOptionService struct {
913+
c *Client
914+
positionId string
915+
redeemTo RedeemTo
916+
}
917+
918+
func (s *SimpleEarnSetRedeemOptionService) PositionId(positionId string) *SimpleEarnSetRedeemOptionService {
919+
s.positionId = positionId
920+
return s
921+
}
922+
923+
func (s *SimpleEarnSetRedeemOptionService) RedeemTo(redeemTo RedeemTo) *SimpleEarnSetRedeemOptionService {
924+
s.redeemTo = redeemTo
925+
return s
926+
}
927+
928+
type SimpleEarnSetRedeemOptionResp struct {
929+
Success bool `json:"success"`
930+
}
931+
932+
func (s *SimpleEarnSetRedeemOptionService) Do(ctx context.Context, opts ...RequestOption) (res *SimpleEarnSetRedeemOptionResp, err error) {
933+
r := &request{
934+
method: http.MethodPost,
935+
endpoint: "/sapi/v1/simple-earn/locked/setRedeemOption",
936+
secType: secTypeSigned,
937+
}
938+
939+
if s.positionId != "" {
940+
r.setParam("positionId", s.positionId)
941+
}
942+
if s.redeemTo != "" {
943+
r.setParam("redeemTo", string(s.redeemTo))
944+
}
945+
946+
data, err := s.c.callAPI(ctx, r, opts...)
947+
if err != nil {
948+
return nil, err
949+
}
950+
951+
res = new(SimpleEarnSetRedeemOptionResp)
952+
if err := json.Unmarshal(data, &res); err != nil {
953+
return nil, err
954+
}
955+
return res, nil
956+
}

v2/simple_earn_service_test.go

+23
Original file line numberDiff line numberDiff line change
@@ -570,3 +570,26 @@ func (s *simpleEarnServiceTestSuite) TestLockedSubscriptionPreview() {
570570
s.r().EqualValues(1651536000000, preview.DeliverDate)
571571
s.r().EqualValues(1651536000000, preview.NextSubscriptionDate)
572572
}
573+
574+
func (s *simpleEarnServiceTestSuite) TestSetRedeemOption() {
575+
data := []byte(`{
576+
"success": true
577+
}`)
578+
s.mockDo(data, nil)
579+
defer s.assertDo()
580+
581+
s.assertReq(func(r *request) {
582+
e := newSignedRequest().setParams(params{
583+
"positionId": "12345",
584+
"redeemTo": "SPOT",
585+
})
586+
s.assertRequestEqual(e, r)
587+
})
588+
589+
resp, err := s.client.NewSimpleEarnSetRedeemOptionService().
590+
PositionId("12345").
591+
RedeemTo(RedeemToSpot).
592+
Do(newContext())
593+
s.r().NoError(err)
594+
s.r().Equal(true, resp.Success)
595+
}

0 commit comments

Comments
 (0)