transfers.go raw
1 package namecom
2
3 import (
4 "bytes"
5 "encoding/json"
6 "fmt"
7 "net/url"
8 )
9
10 var _ = bytes.MinRead
11
12 // ListTransfers lists all pending transfer in requests. To get the information related to a non-pending transfer, you can use the GetTransfer function for that.
13 func (n *NameCom) ListTransfers(request *ListTransfersRequest) (*ListTransfersResponse, error) {
14 endpoint := fmt.Sprintf("/v4/transfers")
15
16 values := url.Values{}
17 if request.PerPage != 0 {
18 values.Set("perPage", fmt.Sprintf("%d", request.PerPage))
19 }
20 if request.Page != 0 {
21 values.Set("page", fmt.Sprintf("%d", request.Page))
22 }
23
24 body, err := n.get(endpoint, values)
25 if err != nil {
26 return nil, err
27 }
28
29 resp := &ListTransfersResponse{}
30
31 err = json.NewDecoder(body).Decode(resp)
32 if err != nil {
33 return nil, err
34 }
35
36 return resp, nil
37 }
38
39 // GetTransfer gets details for a transfer request.
40 func (n *NameCom) GetTransfer(request *GetTransferRequest) (*Transfer, error) {
41 endpoint := fmt.Sprintf("/v4/transfers/%s", request.DomainName)
42
43 values := url.Values{}
44
45 body, err := n.get(endpoint, values)
46 if err != nil {
47 return nil, err
48 }
49
50 resp := &Transfer{}
51
52 err = json.NewDecoder(body).Decode(resp)
53 if err != nil {
54 return nil, err
55 }
56
57 return resp, nil
58 }
59
60 // CreateTransfer purchases a new domain transfer request.
61 func (n *NameCom) CreateTransfer(request *CreateTransferRequest) (*CreateTransferResponse, error) {
62 endpoint := fmt.Sprintf("/v4/transfers")
63
64 post := &bytes.Buffer{}
65 err := json.NewEncoder(post).Encode(request)
66 if err != nil {
67 return nil, err
68 }
69
70 body, err := n.post(endpoint, post)
71 if err != nil {
72 return nil, err
73 }
74
75 resp := &CreateTransferResponse{}
76
77 err = json.NewDecoder(body).Decode(resp)
78 if err != nil {
79 return nil, err
80 }
81
82 return resp, nil
83 }
84
85 // CancelTransfer cancels a pending transfer request and refunds the amount to account credit.
86 func (n *NameCom) CancelTransfer(request *CancelTransferRequest) (*Transfer, error) {
87 endpoint := fmt.Sprintf("/v4/transfers/%s:cancel", request.DomainName)
88
89 post := &bytes.Buffer{}
90 err := json.NewEncoder(post).Encode(request)
91 if err != nil {
92 return nil, err
93 }
94
95 body, err := n.post(endpoint, post)
96 if err != nil {
97 return nil, err
98 }
99
100 resp := &Transfer{}
101
102 err = json.NewDecoder(body).Decode(resp)
103 if err != nil {
104 return nil, err
105 }
106
107 return resp, nil
108 }
109