github.com/akamai/AkamaiOPEN-edgegrid-golang/v2@v2.17.0/pkg/appsec/bypass_network_lists.go (about) 1 package appsec 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 BypassNetworkLists interface supports listing or modifying which network lists are 13 // used in the bypass network lists settings. 14 // Deprecated: this interface will be removed in a future release. Use the WAPBypassNetworkLists interface instead. 15 // 16 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#bypassnetworklist 17 BypassNetworkLists interface { 18 // Deprecated: this method will be removed in a future release. Use the GetWAPBypassNetworkLists method of the WAPBypassNetworkLists interface instead. 19 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#getbypassnetworklistsforawapconfigversion 20 GetBypassNetworkLists(ctx context.Context, params GetBypassNetworkListsRequest) (*GetBypassNetworkListsResponse, error) 21 22 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#putbypassnetworklistsforawapconfigversion 23 // Deprecated: this method will be removed in a future release. Use the UpdateWAPBypassNetworkLists method of the WAPBypassNetworkLists interface instead. 24 UpdateBypassNetworkLists(ctx context.Context, params UpdateBypassNetworkListsRequest) (*UpdateBypassNetworkListsResponse, error) 25 26 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#putbypassnetworklistsforawapconfigversion 27 // Deprecated: this method will be removed in a future release. Use the UpdateWAPBypassNetworkLists method of the WAPBypassNetworkLists interface instead. 28 RemoveBypassNetworkLists(ctx context.Context, params RemoveBypassNetworkListsRequest) (*RemoveBypassNetworkListsResponse, error) 29 } 30 31 // GetBypassNetworkListsRequest is used to list which network lists are used in the bypass network lists settings. 32 GetBypassNetworkListsRequest struct { 33 ConfigID int `json:"-"` 34 Version int `json:"-"` 35 PolicyID string `json:"policyId"` 36 } 37 38 // GetBypassNetworkListsResponse is returned from a call to GetBypassNetworkLists. 39 GetBypassNetworkListsResponse struct { 40 NetworkLists []struct { 41 Name string `json:"name"` 42 ID string `json:"id"` 43 } `json:"networkLists"` 44 } 45 46 // UpdateBypassNetworkListsRequest is used to modify which network lists are used in the bypass network lists settings. 47 UpdateBypassNetworkListsRequest struct { 48 ConfigID int `json:"-"` 49 Version int `json:"-"` 50 PolicyID string `json:"policyId"` 51 NetworkLists []string `json:"networkLists"` 52 } 53 54 // UpdateBypassNetworkListsResponse is returned from a call to UpdateBypassNetworkLists. 55 UpdateBypassNetworkListsResponse struct { 56 Block string `json:"block"` 57 GeoControls struct { 58 BlockedIPNetworkLists struct { 59 NetworkList []string `json:"networkList"` 60 } `json:"blockedIPNetworkLists"` 61 } `json:"geoControls"` 62 IPControls struct { 63 AllowedIPNetworkLists struct { 64 NetworkList []string `json:"networkList"` 65 } `json:"allowedIPNetworkLists"` 66 BlockedIPNetworkLists struct { 67 NetworkList []string `json:"networkList"` 68 } `json:"blockedIPNetworkLists"` 69 } `json:"ipControls"` 70 } 71 72 // RemoveBypassNetworkListsRequest is used to modify which network lists are used in the bypass network lists settings. 73 // Deprecated: this struct will be removed in a future release. 74 RemoveBypassNetworkListsRequest struct { 75 ConfigID int `json:"-"` 76 Version int `json:"-"` 77 PolicyID string `json:"policyId"` 78 NetworkLists []string `json:"networkLists"` 79 } 80 81 // RemoveBypassNetworkListsResponse is returned from a call to RemoveBypassNetworkLists. 82 // Deprecated: this struct will be removed in a future release. 83 RemoveBypassNetworkListsResponse struct { 84 NetworkLists []string `json:"networkLists"` 85 } 86 ) 87 88 // Validate validates a GetBypassNetworkListsRequest. 89 func (v GetBypassNetworkListsRequest) Validate() error { 90 return validation.Errors{ 91 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 92 "Version": validation.Validate(v.Version, validation.Required), 93 }.Filter() 94 } 95 96 // Validate validates an UpdateBypassNetworkListsRequest. 97 func (v UpdateBypassNetworkListsRequest) Validate() error { 98 return validation.Errors{ 99 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 100 "Version": validation.Validate(v.Version, validation.Required), 101 }.Filter() 102 } 103 104 // Validate validates a RemoveBypassNetworkListsRequest. 105 // Deprecated: this method will be removed in a future release. 106 func (v RemoveBypassNetworkListsRequest) Validate() error { 107 return validation.Errors{ 108 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 109 "Version": validation.Validate(v.Version, validation.Required), 110 }.Filter() 111 } 112 113 func (p *appsec) GetBypassNetworkLists(ctx context.Context, params GetBypassNetworkListsRequest) (*GetBypassNetworkListsResponse, error) { 114 logger := p.Log(ctx) 115 logger.Debugf("GetBypassNetworkLists") 116 117 if err := params.Validate(); err != nil { 118 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 119 } 120 121 var uri string 122 if params.PolicyID == "" { 123 uri = fmt.Sprintf( 124 "/appsec/v1/configs/%d/versions/%d/bypass-network-lists", 125 params.ConfigID, 126 params.Version, 127 ) 128 } else { 129 uri = fmt.Sprintf( 130 "/appsec/v1/configs/%d/versions/%d/security-policies/%s/bypass-network-lists", 131 params.ConfigID, 132 params.Version, 133 params.PolicyID, 134 ) 135 } 136 137 req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) 138 if err != nil { 139 return nil, fmt.Errorf("failed to create GetBypassNetworkLists request: %w", err) 140 } 141 142 var result GetBypassNetworkListsResponse 143 resp, err := p.Exec(req, &result) 144 if err != nil { 145 return nil, fmt.Errorf("get bypass network lists request failed: %w", err) 146 } 147 if resp.StatusCode != http.StatusOK { 148 return nil, p.Error(resp) 149 } 150 151 return &result, nil 152 } 153 154 func (p *appsec) UpdateBypassNetworkLists(ctx context.Context, params UpdateBypassNetworkListsRequest) (*UpdateBypassNetworkListsResponse, error) { 155 logger := p.Log(ctx) 156 logger.Debugf("UpdateBypassNetworkLists") 157 158 if err := params.Validate(); err != nil { 159 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 160 } 161 162 var uri string 163 if params.PolicyID == "" { 164 uri = fmt.Sprintf( 165 "/appsec/v1/configs/%d/versions/%d/bypass-network-lists", 166 params.ConfigID, 167 params.Version, 168 ) 169 } else { 170 uri = fmt.Sprintf( 171 "/appsec/v1/configs/%d/versions/%d/security-policies/%s/bypass-network-lists", 172 params.ConfigID, 173 params.Version, 174 params.PolicyID, 175 ) 176 } 177 178 req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) 179 if err != nil { 180 return nil, fmt.Errorf("failed to create UpdateBypassNetworkLists request: %w", err) 181 } 182 183 var result UpdateBypassNetworkListsResponse 184 resp, err := p.Exec(req, &result, params) 185 if err != nil { 186 return nil, fmt.Errorf("update bypass network lists request failed: %w", err) 187 } 188 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { 189 return nil, p.Error(resp) 190 } 191 192 return &result, nil 193 } 194 195 // Deprecated: this method will be removed in a future release. 196 func (p *appsec) RemoveBypassNetworkLists(ctx context.Context, params RemoveBypassNetworkListsRequest) (*RemoveBypassNetworkListsResponse, error) { 197 logger := p.Log(ctx) 198 logger.Debugf("RemoveBypassNetworkLists") 199 200 if err := params.Validate(); err != nil { 201 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 202 } 203 204 var uri string 205 if params.PolicyID == "" { 206 uri = fmt.Sprintf( 207 "/appsec/v1/configs/%d/versions/%d/bypass-network-lists", 208 params.ConfigID, 209 params.Version, 210 ) 211 } else { 212 uri = fmt.Sprintf( 213 "/appsec/v1/configs/%d/versions/%d/security-policies/%s/bypass-network-lists", 214 params.ConfigID, 215 params.Version, 216 params.PolicyID, 217 ) 218 } 219 220 req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) 221 if err != nil { 222 return nil, fmt.Errorf("failed to create RemoveBypassNetworkLists request: %w", err) 223 } 224 225 var result RemoveBypassNetworkListsResponse 226 resp, err := p.Exec(req, &result, params) 227 if err != nil { 228 return nil, fmt.Errorf("remove bypass network lists request failed: %w", err) 229 } 230 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { 231 return nil, p.Error(resp) 232 } 233 234 return &result, nil 235 }