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 }