vip_client.go raw

   1  package network
   2  
   3  import (
   4  	liquidweb "github.com/liquidweb/liquidweb-go"
   5  )
   6  
   7  // VIPBackend describes the interface for interactions with the API.
   8  type VIPBackend interface {
   9  	Create(VIPParams) (*VIP, error)
  10  	Destroy(string) (*VIPDeletion, error)
  11  	Details(string) (*VIP, error)
  12  }
  13  
  14  // VIPClient is the backend implementation for interacting with VIP.
  15  type VIPClient struct {
  16  	Backend liquidweb.Backend
  17  }
  18  
  19  // Create creates a new VIP.
  20  func (c *VIPClient) Create(params VIPParams) (*VIP, error) {
  21  	var result VIP
  22  	err := c.Backend.CallIntoInterface("v1/VIP/create", params, &result)
  23  	if err != nil {
  24  		return nil, err
  25  	}
  26  
  27  	return &result, nil
  28  }
  29  
  30  // Details returns details about a VIP.
  31  func (c *VIPClient) Details(uniqID string) (*VIP, error) {
  32  	var result VIP
  33  	params := VIPParams{UniqID: uniqID}
  34  
  35  	err := c.Backend.CallIntoInterface("v1/VIP/details", params, &result)
  36  	if err != nil {
  37  		return nil, err
  38  	}
  39  	return &result, nil
  40  }
  41  
  42  // Destroy will delete a VIP.
  43  func (c *VIPClient) Destroy(uniqID string) (*VIPDeletion, error) {
  44  	var result VIPDeletion
  45  	params := VIPParams{UniqID: uniqID}
  46  
  47  	err := c.Backend.CallIntoInterface("v1/VIP/destroy", params, &result)
  48  	if err != nil {
  49  		return nil, err
  50  	}
  51  	return &result, nil
  52  }
  53