github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/icd/icdv4/whitelist.go (about)

     1  package icdv4
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/IBM-Cloud/bluemix-go/client"
     6  	"github.com/IBM-Cloud/bluemix-go/utils"
     7  )
     8  
     9  type Whitelist struct {
    10  	WhitelistEntrys []WhitelistEntry `json:"ip_addresses"`
    11  }
    12  
    13  type WhitelistEntry struct {
    14  	Address     string `json:"address,omitempty"`
    15  	Description string `json:"description,omitempty"`
    16  }
    17  
    18  type WhitelistReq struct {
    19  	WhitelistEntry WhitelistEntry `json:"ip_address"`
    20  }
    21  
    22  type Whitelists interface {
    23  	CreateWhitelist(icdId string, whitelistReq WhitelistReq) (Task, error)
    24  	GetWhitelist(icdId string) (Whitelist, error)
    25  	DeleteWhitelist(icdId string, ipAddress string) (Task, error)
    26  }
    27  
    28  type whitelists struct {
    29  	client *client.Client
    30  }
    31  
    32  func newWhitelistAPI(c *client.Client) Whitelists {
    33  	return &whitelists{
    34  		client: c,
    35  	}
    36  }
    37  
    38  func (r *whitelists) CreateWhitelist(icdId string, whitelistReq WhitelistReq) (Task, error) {
    39  	taskResult := TaskResult{}
    40  	rawURL := fmt.Sprintf("/v4/ibm/deployments/%s/whitelists/ip_addresses", utils.EscapeUrlParm(icdId))
    41  	_, err := r.client.Post(rawURL, &whitelistReq, &taskResult)
    42  	if err != nil {
    43  		return taskResult.Task, err
    44  	}
    45  	return taskResult.Task, nil
    46  }
    47  
    48  func (r *whitelists) GetWhitelist(icdId string) (Whitelist, error) {
    49  	whitelist := Whitelist{}
    50  	rawURL := fmt.Sprintf("/v4/ibm/deployments/%s/whitelists/ip_addresses", utils.EscapeUrlParm(icdId))
    51  	_, err := r.client.Get(rawURL, &whitelist)
    52  	if err != nil {
    53  		return whitelist, err
    54  	}
    55  	return whitelist, nil
    56  }
    57  
    58  func (r *whitelists) DeleteWhitelist(icdId string, ipAddress string) (Task, error) {
    59  	taskResult := TaskResult{}
    60  	rawURL := fmt.Sprintf("/v4/ibm/deployments/%s/whitelists/ip_addresses/%s", utils.EscapeUrlParm(icdId), utils.EscapeUrlParm(ipAddress))
    61  	_, err := r.client.DeleteWithResp(rawURL, &taskResult)
    62  	if err != nil {
    63  		return taskResult.Task, err
    64  	}
    65  	return taskResult.Task, nil
    66  }