1package network 2 3import ( 4 liquidweb "github.com/liquidweb/liquidweb-go" 5) 6 7// LoadBalancerBackend describes the interface for interactions with the API. 8type LoadBalancerBackend interface { 9 Create(LoadBalancerParams) (*LoadBalancer, error) 10 Details(string) (*LoadBalancer, error) 11 Update(LoadBalancerParams) (*LoadBalancer, error) 12 Delete(string) (*LoadBalancerDeletion, error) 13} 14 15// LoadBalancerClient is the backend implementation for interacting with the API. 16type LoadBalancerClient struct { 17 Backend liquidweb.Backend 18} 19 20// Create creates a new load balancer. 21func (c *LoadBalancerClient) Create(params LoadBalancerParams) (*LoadBalancer, error) { 22 var result LoadBalancer 23 err := c.Backend.CallIntoInterface("v1/Network/LoadBalancer/create", params, &result) 24 if err != nil { 25 return nil, err 26 } 27 28 return &result, nil 29} 30 31// Details returns details about a load balancer. 32func (c *LoadBalancerClient) Details(uniqID string) (*LoadBalancer, error) { 33 var result LoadBalancer 34 params := LoadBalancerParams{UniqID: uniqID} 35 36 err := c.Backend.CallIntoInterface("v1/Network/LoadBalancer/details", params, &result) 37 if err != nil { 38 return nil, err 39 } 40 41 return &result, nil 42} 43 44// Update will update a load balancer. 45func (c *LoadBalancerClient) Update(params LoadBalancerParams) (*LoadBalancer, error) { 46 var result LoadBalancer 47 err := c.Backend.CallIntoInterface("v1/Network/LoadBalancer/update", params, &result) 48 if err != nil { 49 return nil, err 50 } 51 return &result, nil 52} 53 54// Delete will delete a load balancer. 55func (c *LoadBalancerClient) Delete(uniqID string) (*LoadBalancerDeletion, error) { 56 var result LoadBalancerDeletion 57 params := LoadBalancerParams{UniqID: uniqID} 58 59 err := c.Backend.CallIntoInterface("v1/Network/LoadBalancer/delete", params, &result) 60 if err != nil { 61 return nil, err 62 } 63 return &result, nil 64} 65