github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/appsec/advanced_settings_pii_learning.go (about) 1 package appsec 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 8 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v8/pkg/edgegriderr" 9 validation "github.com/go-ozzo/ozzo-validation/v4" 10 ) 11 12 type ( 13 // The AdvancedSettingsPIILearning interface supports retrieving or modifying the PII Learning setting. 14 AdvancedSettingsPIILearning interface { 15 // GetAdvancedSettingsPIILearning retrieves the PII Learning setting. 16 // 17 // See: https://techdocs.akamai.com/application-security/reference/get-pii-learning 18 GetAdvancedSettingsPIILearning(ctx context.Context, params GetAdvancedSettingsPIILearningRequest) (*AdvancedSettingsPIILearningResponse, error) 19 20 // UpdateAdvancedSettingsPIILearning modifies the PII Learning setting. 21 // 22 // See: https://techdocs.akamai.com/application-security/reference/put-pii-learning 23 UpdateAdvancedSettingsPIILearning(ctx context.Context, params UpdateAdvancedSettingsPIILearningRequest) (*AdvancedSettingsPIILearningResponse, error) 24 } 25 26 // ConfigVersion is used to specify a security configuration and version. 27 ConfigVersion struct { 28 ConfigID int64 29 Version int 30 } 31 32 // GetAdvancedSettingsPIILearningRequest is used to retrieve the PIILearning setting. 33 GetAdvancedSettingsPIILearningRequest struct { 34 ConfigVersion 35 } 36 37 // UpdateAdvancedSettingsPIILearningRequest is used to update the PIILearning setting. 38 UpdateAdvancedSettingsPIILearningRequest struct { 39 ConfigVersion 40 EnablePIILearning bool `json:"enablePiiLearning"` 41 } 42 43 // AdvancedSettingsPIILearningResponse returns the result of updating the PIILearning setting 44 AdvancedSettingsPIILearningResponse struct { 45 EnablePIILearning bool `json:"enablePiiLearning"` 46 } 47 ) 48 49 // Validate validates GetAdvancedSettingssPIILearningRequest 50 func (v GetAdvancedSettingsPIILearningRequest) Validate() error { 51 return edgegriderr.ParseValidationErrors(validation.Errors{ 52 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 53 "Version": validation.Validate(v.Version, validation.Required), 54 }) 55 } 56 57 // Validate validates UpdateAdvancedSettingsPIILearningRequest 58 func (v UpdateAdvancedSettingsPIILearningRequest) Validate() error { 59 return edgegriderr.ParseValidationErrors(validation.Errors{ 60 "ConfigID": validation.Validate(v.ConfigID, validation.Required), 61 "Version": validation.Validate(v.Version, validation.Required), 62 }) 63 } 64 65 func (p *appsec) GetAdvancedSettingsPIILearning(ctx context.Context, params GetAdvancedSettingsPIILearningRequest) (*AdvancedSettingsPIILearningResponse, error) { 66 logger := p.Log(ctx) 67 logger.Debug("GetAdvancedSettingsPIILearning") 68 69 if err := params.Validate(); err != nil { 70 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 71 } 72 73 uri := fmt.Sprintf( 74 "/appsec/v1/configs/%d/versions/%d/advanced-settings/pii-learning", 75 params.ConfigID, 76 params.Version) 77 78 req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) 79 if err != nil { 80 return nil, fmt.Errorf("%w: %s", ErrRequestCreation, err.Error()) 81 } 82 83 var result AdvancedSettingsPIILearningResponse 84 resp, err := p.Exec(req, &result) 85 if err != nil { 86 return nil, fmt.Errorf("%w: %s", ErrAPICallFailure, err.Error()) 87 } 88 89 if resp.StatusCode != http.StatusOK { 90 return nil, p.Error(resp) 91 } 92 93 return &result, nil 94 } 95 96 func (p *appsec) UpdateAdvancedSettingsPIILearning(ctx context.Context, params UpdateAdvancedSettingsPIILearningRequest) (*AdvancedSettingsPIILearningResponse, error) { 97 logger := p.Log(ctx) 98 logger.Debug("UpdateAdvancedSettingsPIILearning") 99 100 if err := params.Validate(); err != nil { 101 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 102 } 103 104 uri := fmt.Sprintf( 105 "/appsec/v1/configs/%d/versions/%d/advanced-settings/pii-learning", 106 params.ConfigID, 107 params.Version) 108 109 req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) 110 if err != nil { 111 return nil, fmt.Errorf("%w: %s", ErrRequestCreation, err.Error()) 112 } 113 114 var result AdvancedSettingsPIILearningResponse 115 resp, err := p.Exec(req, &result, struct { 116 EnablePIILearning bool `json:"enablePiiLearning"` 117 }{ 118 EnablePIILearning: params.EnablePIILearning}) 119 if err != nil { 120 return nil, fmt.Errorf("%w: %s", ErrAPICallFailure, err.Error()) 121 } 122 123 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { 124 return nil, p.Error(resp) 125 } 126 127 return &result, nil 128 }