github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/networklists/network_list_description.go (about)

     1  package networklists
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"net/http"
     7  
     8  	validation "github.com/go-ozzo/ozzo-validation/v4"
     9  )
    10  
    11  type (
    12  	// The NetworkListDescription interface supports retrieving and updating a network list's description.
    13  	NetworkListDescription interface {
    14  		// GetNetworkListDescription retrieves network list with description.
    15  		//
    16  		// See: https://techdocs.akamai.com/network-lists/reference/get-network-list
    17  		GetNetworkListDescription(ctx context.Context, params GetNetworkListDescriptionRequest) (*GetNetworkListDescriptionResponse, error)
    18  
    19  		// UpdateNetworkListDescription modifies network list description.
    20  		//
    21  		// See: https://techdocs.akamai.com/network-lists/reference/put-network-list-details
    22  		UpdateNetworkListDescription(ctx context.Context, params UpdateNetworkListDescriptionRequest) (*UpdateNetworkListDescriptionResponse, error)
    23  	}
    24  
    25  	// GetNetworkListDescriptionRequest contains request parameters for GetNetworkListDescription method
    26  	GetNetworkListDescriptionRequest struct {
    27  		UniqueID    string `json:"uniqueId"`
    28  		Name        string `json:"name"`
    29  		Description string `json:"description"`
    30  	}
    31  
    32  	// GetNetworkListDescriptionResponse contains response from GetNetworkListDescription method
    33  	GetNetworkListDescriptionResponse struct {
    34  		Name            string   `json:"name"`
    35  		UniqueID        string   `json:"uniqueId"`
    36  		Description     string   `json:"description"`
    37  		SyncPoint       int      `json:"syncPoint"`
    38  		Type            string   `json:"type"`
    39  		NetworkListType string   `json:"networkListType"`
    40  		ElementCount    int      `json:"elementCount"`
    41  		ReadOnly        bool     `json:"readOnly"`
    42  		Shared          bool     `json:"shared"`
    43  		List            []string `json:"list"`
    44  		Links           struct {
    45  			ActivateInProduction struct {
    46  				Href   string `json:"href"`
    47  				Method string `json:"method"`
    48  			} `json:"activateInProduction"`
    49  			ActivateInStaging struct {
    50  				Href   string `json:"href"`
    51  				Method string `json:"method"`
    52  			} `json:"activateInStaging"`
    53  			AppendItems struct {
    54  				Href   string `json:"href"`
    55  				Method string `json:"method"`
    56  			} `json:"appendItems"`
    57  			Retrieve struct {
    58  				Href string `json:"href"`
    59  			} `json:"retrieve"`
    60  			StatusInProduction struct {
    61  				Href string `json:"href"`
    62  			} `json:"statusInProduction"`
    63  			StatusInStaging struct {
    64  				Href string `json:"href"`
    65  			} `json:"statusInStaging"`
    66  			Update struct {
    67  				Href   string `json:"href"`
    68  				Method string `json:"method"`
    69  			} `json:"update"`
    70  		} `json:"links"`
    71  	}
    72  
    73  	// UpdateNetworkListDescriptionRequest contains request parameters for UpdateNetworkListDescription method
    74  	UpdateNetworkListDescriptionRequest struct {
    75  		UniqueID    string `json:"-"`
    76  		Name        string `json:"name"`
    77  		Description string `json:"description"`
    78  	}
    79  
    80  	// UpdateNetworkListDescriptionResponse contains response from UpdateNetworkListDescription method
    81  	UpdateNetworkListDescriptionResponse struct {
    82  		Empty string `json:"-"`
    83  	}
    84  )
    85  
    86  // Validate validates GetNetworkListDescriptionRequest
    87  func (v GetNetworkListDescriptionRequest) Validate() error {
    88  	return validation.Errors{
    89  		"UniqueID": validation.Validate(v.UniqueID, validation.Required),
    90  	}.Filter()
    91  }
    92  
    93  // Validate validates UpdateNetworkListDescriptionRequest
    94  func (v UpdateNetworkListDescriptionRequest) Validate() error {
    95  	return validation.Errors{
    96  		"UniqueID": validation.Validate(v.UniqueID, validation.Required),
    97  	}.Filter()
    98  }
    99  
   100  func (p *networklists) GetNetworkListDescription(ctx context.Context, params GetNetworkListDescriptionRequest) (*GetNetworkListDescriptionResponse, error) {
   101  	if err := params.Validate(); err != nil {
   102  		return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error())
   103  	}
   104  
   105  	logger := p.Log(ctx)
   106  	logger.Debug("GetNetworkListDescription")
   107  
   108  	var rval GetNetworkListDescriptionResponse
   109  
   110  	uri := fmt.Sprintf(
   111  		"/network-list/v2/network-lists/%s",
   112  		params.UniqueID)
   113  
   114  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil)
   115  	if err != nil {
   116  		return nil, fmt.Errorf("failed to create getnetworklistdescription request: %s", err.Error())
   117  	}
   118  
   119  	resp, err := p.Exec(req, &rval)
   120  	if err != nil {
   121  		return nil, fmt.Errorf("getnetworklistdescription  request failed: %s", err.Error())
   122  	}
   123  
   124  	if resp.StatusCode != http.StatusOK {
   125  		return nil, p.Error(resp)
   126  	}
   127  
   128  	return &rval, nil
   129  
   130  }
   131  
   132  func (p *networklists) UpdateNetworkListDescription(ctx context.Context, params UpdateNetworkListDescriptionRequest) (*UpdateNetworkListDescriptionResponse, error) {
   133  	if err := params.Validate(); err != nil {
   134  		return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error())
   135  	}
   136  
   137  	logger := p.Log(ctx)
   138  	logger.Debug("UpdateNetworkListDescription")
   139  
   140  	putURL := fmt.Sprintf(
   141  		"/network-list/v2/network-lists/%s/details",
   142  		params.UniqueID,
   143  	)
   144  
   145  	req, err := http.NewRequestWithContext(ctx, http.MethodPut, putURL, nil)
   146  	if err != nil {
   147  		return nil, fmt.Errorf("failed to create create NetworkListDescriptionrequest: %s", err.Error())
   148  	}
   149  
   150  	var rval UpdateNetworkListDescriptionResponse
   151  	resp, err := p.Exec(req, &rval, params)
   152  	if err != nil {
   153  		return nil, fmt.Errorf("create NetworkListDescription request failed: %s", err.Error())
   154  	}
   155  
   156  	if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated && resp.StatusCode != http.StatusNoContent {
   157  		return nil, p.Error(resp)
   158  	}
   159  
   160  	return &rval, nil
   161  }