github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/appsec/eval_penalty_box_conditions.go (about) 1 package appsec 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 ) 8 9 type ( 10 // EvalPenaltyBoxConditions interface supports retrieving or modifying the evaluation penalty box conditions for 11 // a specified security policy in evaluation mode. 12 EvalPenaltyBoxConditions interface { 13 // GetEvalPenaltyBoxConditions returns the eval penalty box conditions for a security policy in evaluation mode. 14 GetEvalPenaltyBoxConditions(ctx context.Context, params GetPenaltyBoxConditionsRequest) (*GetPenaltyBoxConditionsResponse, error) 15 16 // UpdateEvalPenaltyBoxConditions modifies the eval penalty box conditions for a security policy. 17 UpdateEvalPenaltyBoxConditions(ctx context.Context, params UpdatePenaltyBoxConditionsRequest) (*UpdatePenaltyBoxConditionsResponse, error) 18 } 19 ) 20 21 func (p *appsec) GetEvalPenaltyBoxConditions(ctx context.Context, params GetPenaltyBoxConditionsRequest) (*GetPenaltyBoxConditionsResponse, error) { 22 logger := p.Log(ctx) 23 logger.Debug("GetEvalPenaltyBoxConditions") 24 25 if err := params.Validate(); err != nil { 26 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 27 } 28 29 uri := fmt.Sprintf( 30 "/appsec/v1/configs/%d/versions/%d/security-policies/%s/eval-penalty-box/conditions", 31 params.ConfigID, 32 params.Version, 33 params.PolicyID) 34 35 req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) 36 if err != nil { 37 return nil, fmt.Errorf("failed to create GetEvalPenaltyBoxConditions request: %w", err) 38 } 39 40 var result GetPenaltyBoxConditionsResponse 41 resp, err := p.Exec(req, &result) 42 if err != nil { 43 return nil, fmt.Errorf("get eval penalty box conditions request failed: %w", err) 44 } 45 if resp.StatusCode != http.StatusOK { 46 return nil, p.Error(resp) 47 } 48 49 return &result, nil 50 } 51 52 func (p *appsec) UpdateEvalPenaltyBoxConditions(ctx context.Context, params UpdatePenaltyBoxConditionsRequest) (*UpdatePenaltyBoxConditionsResponse, error) { 53 logger := p.Log(ctx) 54 logger.Debug("UpdateEvalPenaltyBoxConditions") 55 56 if err := params.Validate(); err != nil { 57 return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) 58 } 59 60 uri := fmt.Sprintf( 61 "/appsec/v1/configs/%d/versions/%d/security-policies/%s/eval-penalty-box/conditions", 62 params.ConfigID, 63 params.Version, 64 params.PolicyID, 65 ) 66 67 req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) 68 if err != nil { 69 return nil, fmt.Errorf("failed to create UpdateEvalPenaltyBoxConditions request: %w", err) 70 } 71 72 var result UpdatePenaltyBoxConditionsResponse 73 resp, err := p.Exec(req, &result, params.ConditionsPayload) 74 if err != nil { 75 return nil, fmt.Errorf("update eval penalty box conditions request failed: %w", err) 76 } 77 if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { 78 return nil, p.Error(resp) 79 } 80 81 return &result, nil 82 }