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

     1  package networklists
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"net/http"
     7  )
     8  
     9  type (
    10  	// The NetworkListSubscription interface supports creating, modifying and removing network list subscriptions.
    11  	NetworkListSubscription interface {
    12  		// GetNetworkListSubscription retrieves networklist subscription.
    13  		//
    14  		// See: https://techdocs.akamai.com/network-lists/reference/post-notifications-subscribe
    15  		GetNetworkListSubscription(ctx context.Context, params GetNetworkListSubscriptionRequest) (*GetNetworkListSubscriptionResponse, error)
    16  
    17  		// UpdateNetworkListSubscription updates networklist subscription.
    18  		//
    19  		// See: https://techdocs.akamai.com/network-lists/reference/post-notifications-subscribe
    20  		UpdateNetworkListSubscription(ctx context.Context, params UpdateNetworkListSubscriptionRequest) (*UpdateNetworkListSubscriptionResponse, error)
    21  
    22  		// RemoveNetworkListSubscription unsubscribes networklist.
    23  		//
    24  		// See: https://techdocs.akamai.com/network-lists/reference/post-notifications-unsubscribe
    25  		RemoveNetworkListSubscription(ctx context.Context, params RemoveNetworkListSubscriptionRequest) (*RemoveNetworkListSubscriptionResponse, error)
    26  	}
    27  
    28  	// GetNetworkListSubscriptionRequest contains request parameters for GetNetworkListSubscription
    29  	GetNetworkListSubscriptionRequest struct {
    30  		Recipients []string `json:"-"`
    31  		UniqueIds  []string `json:"-"`
    32  	}
    33  
    34  	// GetNetworkListSubscriptionResponse contains response from GetNetworkListSubscription
    35  	GetNetworkListSubscriptionResponse struct {
    36  		Links struct {
    37  			Create struct {
    38  				Href   string `json:"href"`
    39  				Method string `json:"method"`
    40  			} `json:"create"`
    41  		} `json:"links"`
    42  		NetworkLists []struct {
    43  			ElementCount int `json:"elementCount"`
    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  			Name               string `json:"name"`
    72  			NetworkListType    string `json:"networkListType"`
    73  			ReadOnly           bool   `json:"readOnly"`
    74  			Shared             bool   `json:"shared"`
    75  			SyncPoint          int    `json:"syncPoint"`
    76  			Type               string `json:"type"`
    77  			UniqueID           string `json:"uniqueId"`
    78  			AccessControlGroup string `json:"accessControlGroup,omitempty"`
    79  			Description        string `json:"description,omitempty"`
    80  		} `json:"networkLists"`
    81  	}
    82  
    83  	// UpdateNetworkListSubscriptionRequest contains request parameters for UpdateNetworkListSubscription method
    84  	UpdateNetworkListSubscriptionRequest struct {
    85  		Recipients []string `json:"recipients"`
    86  		UniqueIds  []string `json:"uniqueIds"`
    87  	}
    88  
    89  	// UpdateNetworkListSubscriptionResponse contains response from UpdateNetworkListSubscription method
    90  	UpdateNetworkListSubscriptionResponse struct {
    91  		Empty string `json:"-"`
    92  	}
    93  
    94  	// RemoveNetworkListSubscriptionResponse contains response from RemoveNetworkListSubscription method
    95  	RemoveNetworkListSubscriptionResponse struct {
    96  		Empty string `json:"-"`
    97  	}
    98  
    99  	// RemoveNetworkListSubscriptionRequest contains request parameters for RemoveNetworkListSubscription method
   100  	RemoveNetworkListSubscriptionRequest struct {
   101  		Recipients []string `json:"recipients"`
   102  		UniqueIds  []string `json:"uniqueIds"`
   103  	}
   104  
   105  	// Recipients contains recipients
   106  	Recipients struct {
   107  		Recipients string `json:"notificationRecipients"`
   108  	}
   109  )
   110  
   111  func (p *networklists) GetNetworkListSubscription(ctx context.Context, _ GetNetworkListSubscriptionRequest) (*GetNetworkListSubscriptionResponse, error) {
   112  
   113  	logger := p.Log(ctx)
   114  	logger.Debug("GetNetworkListSubscription")
   115  
   116  	var rval GetNetworkListSubscriptionResponse
   117  
   118  	uri := "/network-list/v2/notifications/subscriptions"
   119  
   120  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil)
   121  	if err != nil {
   122  		return nil, fmt.Errorf("failed to create getnetworklistsubscription request: %s", err.Error())
   123  	}
   124  
   125  	resp, err := p.Exec(req, &rval)
   126  	if err != nil {
   127  		return nil, fmt.Errorf("getnetworklistsubscription  request failed: %s", err.Error())
   128  	}
   129  
   130  	if resp.StatusCode != http.StatusOK {
   131  		return nil, p.Error(resp)
   132  	}
   133  
   134  	return &rval, nil
   135  
   136  }
   137  
   138  func (p *networklists) UpdateNetworkListSubscription(ctx context.Context, params UpdateNetworkListSubscriptionRequest) (*UpdateNetworkListSubscriptionResponse, error) {
   139  
   140  	logger := p.Log(ctx)
   141  	logger.Debug("UpdateNetworkListSubscription")
   142  
   143  	postURL := "/network-list/v2/notifications/subscribe"
   144  
   145  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, postURL, nil)
   146  	if err != nil {
   147  		return nil, fmt.Errorf("failed to create create NetworkListSubscriptionrequest: %s", err.Error())
   148  	}
   149  
   150  	var rval UpdateNetworkListSubscriptionResponse
   151  	resp, err := p.Exec(req, &rval, params)
   152  	if err != nil {
   153  		return nil, fmt.Errorf("remove NetworkListSubscription 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  }
   162  
   163  func (p *networklists) RemoveNetworkListSubscription(ctx context.Context, params RemoveNetworkListSubscriptionRequest) (*RemoveNetworkListSubscriptionResponse, error) {
   164  
   165  	logger := p.Log(ctx)
   166  	logger.Debug("UpdateNetworkListSubscription")
   167  
   168  	postURL := "/network-list/v2/notifications/unsubscribe"
   169  
   170  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, postURL, nil)
   171  	if err != nil {
   172  		return nil, fmt.Errorf("failed to create create NetworkListSubscriptionrequest: %s", err.Error())
   173  	}
   174  
   175  	var rval RemoveNetworkListSubscriptionResponse
   176  	resp, err := p.Exec(req, &rval, params)
   177  	if err != nil {
   178  		return nil, fmt.Errorf("remove NetworkListSubscription request failed: %s", err.Error())
   179  	}
   180  
   181  	if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated && resp.StatusCode != http.StatusNoContent {
   182  		return nil, p.Error(resp)
   183  	}
   184  
   185  	return &rval, nil
   186  }