orders.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  // ListOrders returns all orders in the account. It omits some information that can be retrieved from GetOrder.
  13  func (n *NameCom) ListOrders(request *ListOrdersRequest) (*ListOrdersResponse, error) {
  14  	endpoint := fmt.Sprintf("/v4/orders")
  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 := &ListOrdersResponse{}
  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  // GetOrder returns details about a specific order
  40  func (n *NameCom) GetOrder(request *GetOrderRequest) (*Order, error) {
  41  	endpoint := fmt.Sprintf("/v4/orders/%d", request.OrderID)
  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 := &Order{}
  51  
  52  	err = json.NewDecoder(body).Decode(resp)
  53  	if err != nil {
  54  		return nil, err
  55  	}
  56  
  57  	return resp, nil
  58  }
  59