github.com/akamai/AkamaiOPEN-edgegrid-golang/v2@v2.17.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 // 12 // https://developer.akamai.com/api/cloud_security/network_lists/v2.html#networklist 13 NetworkListSubscription interface { 14 // https://developer.akamai.com/api/cloud_security/network_lists/v2.html#postsubscribe 15 GetNetworkListSubscription(ctx context.Context, params GetNetworkListSubscriptionRequest) (*GetNetworkListSubscriptionResponse, error) 16 17 // https://developer.akamai.com/api/cloud_security/network_lists/v2.html#postsubscribe 18 UpdateNetworkListSubscription(ctx context.Context, params UpdateNetworkListSubscriptionRequest) (*UpdateNetworkListSubscriptionResponse, error) 19 20 // https://developer.akamai.com/api/cloud_security/network_lists/v2.html#postunsubscribe 21 RemoveNetworkListSubscription(ctx context.Context, params RemoveNetworkListSubscriptionRequest) (*RemoveNetworkListSubscriptionResponse, error) 22 } 23 24 // GetNetworkListSubscriptionRequest contains request parameters for GetNetworkListSubscription 25 GetNetworkListSubscriptionRequest struct { 26 Recipients []string `json:"-"` 27 UniqueIds []string `json:"-"` 28 } 29 30 // GetNetworkListSubscriptionResponse contains response from GetNetworkListSubscription 31 GetNetworkListSubscriptionResponse struct { 32 Links struct { 33 Create struct { 34 Href string `json:"href"` 35 Method string `json:"method"` 36 } `json:"create"` 37 } `json:"links"` 38 NetworkLists []struct { 39 ElementCount int `json:"elementCount"` 40 Links struct { 41 ActivateInProduction struct { 42 Href string `json:"href"` 43 Method string `json:"method"` 44 } `json:"activateInProduction"` 45 ActivateInStaging struct { 46 Href string `json:"href"` 47 Method string `json:"method"` 48 } `json:"activateInStaging"` 49 AppendItems struct { 50 Href string `json:"href"` 51 Method string `json:"method"` 52 } `json:"appendItems"` 53 Retrieve struct { 54 Href string `json:"href"` 55 } `json:"retrieve"` 56 StatusInProduction struct { 57 Href string `json:"href"` 58 } `json:"statusInProduction"` 59 StatusInStaging struct { 60 Href string `json:"href"` 61 } `json:"statusInStaging"` 62 Update struct { 63 Href string `json:"href"` 64 Method string `json:"method"` 65 } `json:"update"` 66 } `json:"links"` 67 Name string `json:"name"` 68 NetworkListType string `json:"networkListType"` 69 ReadOnly bool `json:"readOnly"` 70 Shared bool `json:"shared"` 71 SyncPoint int `json:"syncPoint"` 72 Type string `json:"type"` 73 UniqueID string `json:"uniqueId"` 74 AccessControlGroup string `json:"accessControlGroup,omitempty"` 75 Description string `json:"description,omitempty"` 76 } `json:"networkLists"` 77 } 78 79 // UpdateNetworkListSubscriptionRequest contains request parameters for UpdateNetworkListSubscription method 80 UpdateNetworkListSubscriptionRequest struct { 81 Recipients []string `json:"recipients"` 82 UniqueIds []string `json:"uniqueIds"` 83 } 84 85 // UpdateNetworkListSubscriptionResponse contains response from UpdateNetworkListSubscription method 86 UpdateNetworkListSubscriptionResponse struct { 87 Empty string `json:"-"` 88 } 89 90 // RemoveNetworkListSubscriptionResponse contains response from RemoveNetworkListSubscription method 91 RemoveNetworkListSubscriptionResponse struct { 92 Empty string `json:"-"` 93 } 94 95 // RemoveNetworkListSubscriptionRequest contains request parameters for RemoveNetworkListSubscription method 96 RemoveNetworkListSubscriptionRequest struct { 97 Recipients []string `json:"recipients"` 98 UniqueIds []string `json:"uniqueIds"` 99 } 100 101 // Recipients contains recipients 102 Recipients struct { 103 Recipients string `json:"notificationRecipients"` 104 } 105 ) 106 107 func (p *networklists) GetNetworkListSubscription(ctx context.Context, _ GetNetworkListSubscriptionRequest) (*GetNetworkListSubscriptionResponse, error) { 108 109 logger := p.Log(ctx) 110 logger.Debug("GetNetworkListSubscription") 111 112 var rval GetNetworkListSubscriptionResponse 113 114 uri := "/network-list/v2/notifications/subscriptions" 115 116 req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) 117 if err != nil { 118 return nil, fmt.Errorf("failed to create getnetworklistsubscription request: %s", err.Error()) 119 } 120 121 resp, err := p.Exec(req, &rval) 122 if err != nil { 123 return nil, fmt.Errorf("getnetworklistsubscription request failed: %s", err.Error()) 124 } 125 126 if resp.StatusCode != http.StatusOK { 127 return nil, p.Error(resp) 128 } 129 130 return &rval, nil 131 132 } 133 134 // Update will update a NetworkListSubscription. 135 // 136 // API Docs: // network_lists v2 137 // 138 // https://developer.akamai.com/api/cloud_security/network_lists/v2.html#putnetworklistsubscription 139 140 func (p *networklists) UpdateNetworkListSubscription(ctx context.Context, params UpdateNetworkListSubscriptionRequest) (*UpdateNetworkListSubscriptionResponse, error) { 141 142 logger := p.Log(ctx) 143 logger.Debug("UpdateNetworkListSubscription") 144 145 postURL := "/network-list/v2/notifications/subscribe" 146 147 req, err := http.NewRequestWithContext(ctx, http.MethodPost, postURL, nil) 148 if err != nil { 149 return nil, fmt.Errorf("failed to create create NetworkListSubscriptionrequest: %s", err.Error()) 150 } 151 152 var rval UpdateNetworkListSubscriptionResponse 153 resp, err := p.Exec(req, &rval, params) 154 if err != nil { 155 return nil, fmt.Errorf("remove NetworkListSubscription request failed: %s", err.Error()) 156 } 157 158 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated && resp.StatusCode != http.StatusNoContent { 159 return nil, p.Error(resp) 160 } 161 162 return &rval, nil 163 } 164 165 // Remove will remove a NetworkListSubscription. 166 // 167 // API Docs: // network_lists v2 168 // 169 // https://developer.akamai.com/api/cloud_security/network_lists/v2.html#putnetworklistsubscription 170 171 func (p *networklists) RemoveNetworkListSubscription(ctx context.Context, params RemoveNetworkListSubscriptionRequest) (*RemoveNetworkListSubscriptionResponse, error) { 172 173 logger := p.Log(ctx) 174 logger.Debug("UpdateNetworkListSubscription") 175 176 postURL := "/network-list/v2/notifications/unsubscribe" 177 178 req, err := http.NewRequestWithContext(ctx, http.MethodPost, postURL, nil) 179 if err != nil { 180 return nil, fmt.Errorf("failed to create create NetworkListSubscriptionrequest: %s", err.Error()) 181 } 182 183 var rval RemoveNetworkListSubscriptionResponse 184 resp, err := p.Exec(req, &rval, params) 185 if err != nil { 186 return nil, fmt.Errorf("remove NetworkListSubscription request failed: %s", err.Error()) 187 } 188 189 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated && resp.StatusCode != http.StatusNoContent { 190 return nil, p.Error(resp) 191 } 192 193 return &rval, nil 194 }