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