github.com/akamai/AkamaiOPEN-edgegrid-golang/v2@v2.17.0/pkg/appsec/eval_host.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 EvalHost interface supports retrieving and modifying list of evaluation hostnames for a configuration. 13 // Deprecated: this interface will be removed in a future release. Use the WAPSelectedHostnames interface instead. 14 // 15 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#evalhostname 16 EvalHost interface { 17 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#getevaluationhostnames 18 // Deprecated: this method will be removed in a future release. Use the GetWAPSelectedHostnames method of the WAPSelectedHostnames interface instead. 19 GetEvalHosts(ctx context.Context, params GetEvalHostsRequest) (*GetEvalHostsResponse, error) 20 21 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#getevaluationhostnames 22 // Deprecated: this method will be removed in a future release. Use the GetWAPSelectedHostnames method of the WAPSelectedHostnames interface instead. 23 GetEvalHost(ctx context.Context, params GetEvalHostRequest) (*GetEvalHostResponse, error) 24 25 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#putevaluationhostnames 26 // Deprecated: this method will be removed in a future release. Use the UpdateWAPSelectedHostnames method of the WAPSelectedHostnames interface instead. 27 UpdateEvalHost(ctx context.Context, params UpdateEvalHostRequest) (*UpdateEvalHostResponse, error) 28 29 // https://developer.akamai.com/api/cloud_security/application_security/v1.html#putevaluationhostnames 30 // Deprecated: this method will be removed in a future release. Use the WAPSelectedHostnames method of the WAPSelectedHostnames interface instead. 31 RemoveEvalHost(ctx context.Context, params RemoveEvalHostRequest) (*RemoveEvalHostResponse, error) 32 } 33 34 // GetEvalHostRequest is used to retrieve the evaluation hostnames for a configuration. 35 // Deprecated: this struct will be removed in a future release. 36 GetEvalHostRequest struct { 37 ConfigID int `json:"-"` 38 Version int `json:"-"` 39 } 40 41 // GetEvalHostResponse is returned from a call to GetEvalHost. 42 // Deprecated: this struct will be removed in a future release. 43 GetEvalHostResponse struct { 44 Hostnames []string `json:"hostnames"` 45 } 46 47 // GetEvalHostsRequest is used to retrieve the evaluation hostnames for a configuration. 48 GetEvalHostsRequest struct { 49 ConfigID int `json:"-"` 50 Version int `json:"-"` 51 } 52 53 // GetEvalHostsResponse is returned from a call to GetEvalHosts. 54 GetEvalHostsResponse struct { 55 Hostnames []string `json:"hostnames"` 56 } 57 58 // UpdateEvalHostRequest is used to modify the evaluation hostnames for a configuration. 59 UpdateEvalHostRequest struct { 60 ConfigID int `json:"-"` 61 Version int `json:"-"` 62 Hostnames []string `json:"hostnames"` 63 } 64 65 // UpdateEvalHostResponse is returned from a call to UpdateEvalHost. 66 UpdateEvalHostResponse struct { 67 HostnameList []struct { 68 Hostname string `json:"hostname"` 69 } `json:"hostnameList"` 70 } 71 72 // RemoveEvalHostRequest is used to remove the evaluation hostnames for a configuration. 73 RemoveEvalHostRequest struct { 74 ConfigID int `json:"-"` 75 Version int `json:"-"` 76 Hostnames []string `json:"hostnames"` 77 } 78 79 // RemoveEvalHostResponse is returned from a call to RemoveEvalHost. 80 RemoveEvalHostResponse struct { 81 Hostnames []string `json:"hostnames"` 82 } 83 ) 84 85 // Validate validates a GetEvalHostRequest. 86 // Deprecated: this method will be removed in a future release. 87 func (v GetEvalHostRequest) Validate() error { 88 return validation.Errors{ 89 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 90 "Version": validation.Validate(v.Version, validation.Required), 91 }.Filter() 92 } 93 94 // Validate validates a GetEvalHostsRequest. 95 func (v GetEvalHostsRequest) Validate() error { 96 return validation.Errors{ 97 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 98 "Version": validation.Validate(v.Version, validation.Required), 99 }.Filter() 100 } 101 102 // Validate validates an UpdateEvalHostRequest. 103 func (v UpdateEvalHostRequest) Validate() error { 104 return validation.Errors{ 105 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 106 "Version": validation.Validate(v.Version, validation.Required), 107 }.Filter() 108 } 109 110 // Validate validates a RemoveEvalHostRequest. 111 func (v RemoveEvalHostRequest) Validate() error { 112 return validation.Errors{ 113 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 114 "Version": validation.Validate(v.Version, validation.Required), 115 }.Filter() 116 } 117 118 // Deprecated: this method will be removed in a future release. 119 func (p *appsec) GetEvalHost(ctx context.Context, params GetEvalHostRequest) (*GetEvalHostResponse, error) { 120 logger := p.Log(ctx) 121 logger.Debug("GetEvalHost") 122 123 if err := params.Validate(); err != nil { 124 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 125 } 126 127 uri := fmt.Sprintf( 128 "/appsec/v1/configs/%d/versions/%d/selected-hostnames/eval-hostnames", 129 params.ConfigID, 130 params.Version) 131 132 req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) 133 if err != nil { 134 return nil, fmt.Errorf("failed to create GetEvalHost request: %w", err) 135 } 136 137 var result GetEvalHostResponse 138 resp, err := p.Exec(req, &result) 139 if err != nil { 140 return nil, fmt.Errorf("get eval host request failed: %w", err) 141 } 142 if resp.StatusCode != http.StatusOK { 143 return nil, p.Error(resp) 144 } 145 146 return &result, nil 147 } 148 149 func (p *appsec) GetEvalHosts(ctx context.Context, params GetEvalHostsRequest) (*GetEvalHostsResponse, error) { 150 logger := p.Log(ctx) 151 logger.Debug("GetEvalHosts") 152 153 if err := params.Validate(); err != nil { 154 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 155 } 156 157 uri := fmt.Sprintf( 158 "/appsec/v1/configs/%d/versions/%d/selected-hostnames/eval-hostnames", 159 params.ConfigID, 160 params.Version) 161 162 req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) 163 if err != nil { 164 return nil, fmt.Errorf("failed to create GetEvalHosts request: %w", err) 165 } 166 167 var result GetEvalHostsResponse 168 resp, err := p.Exec(req, &result) 169 if err != nil { 170 return nil, fmt.Errorf("get eval hosts request failed: %w", err) 171 } 172 if resp.StatusCode != http.StatusOK { 173 return nil, p.Error(resp) 174 } 175 176 return &result, nil 177 } 178 179 func (p *appsec) UpdateEvalHost(ctx context.Context, params UpdateEvalHostRequest) (*UpdateEvalHostResponse, error) { 180 logger := p.Log(ctx) 181 logger.Debug("UpdateEvalHost") 182 183 if err := params.Validate(); err != nil { 184 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 185 } 186 187 uri := fmt.Sprintf( 188 "/appsec/v1/configs/%d/versions/%d/selected-hostnames/eval-hostnames", 189 params.ConfigID, 190 params.Version) 191 192 req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) 193 if err != nil { 194 return nil, fmt.Errorf("failed to create UpdateEvalHost request: %w", err) 195 } 196 197 var result UpdateEvalHostResponse 198 resp, err := p.Exec(req, &result, params) 199 if err != nil { 200 return nil, fmt.Errorf("update eval host request failed: %w", err) 201 } 202 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { 203 return nil, p.Error(resp) 204 } 205 206 return &result, nil 207 } 208 209 func (p *appsec) RemoveEvalHost(ctx context.Context, params RemoveEvalHostRequest) (*RemoveEvalHostResponse, error) { 210 logger := p.Log(ctx) 211 logger.Debug("RemoveEvalHost") 212 213 if err := params.Validate(); err != nil { 214 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 215 } 216 217 uri := fmt.Sprintf( 218 "/appsec/v1/configs/%d/versions/%d/selected-hostnames/eval-hostnames", 219 params.ConfigID, 220 params.Version) 221 222 req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) 223 if err != nil { 224 return nil, fmt.Errorf("failed to create RemoveEvalHost request: %w", err) 225 } 226 227 var result RemoveEvalHostResponse 228 resp, err := p.Exec(req, &result, params) 229 if err != nil { 230 return nil, fmt.Errorf("remove eval host request failed: %w", err) 231 } 232 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { 233 return nil, p.Error(resp) 234 } 235 236 return &result, nil 237 }