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