-
Notifications
You must be signed in to change notification settings - Fork 69
/
content_protection_rule_sequence.go
132 lines (107 loc) · 5.09 KB
/
content_protection_rule_sequence.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
132
package botman
import (
"context"
"fmt"
"net/http"
"github.com/akamai/AkamaiOPEN-edgegrid-golang/v9/pkg/session"
validation "github.com/go-ozzo/ozzo-validation/v4"
)
type (
// The ContentProtectionRuleSequence interface supports retrieving and updating content protection rule sequence
ContentProtectionRuleSequence interface {
// GetContentProtectionRuleSequence https://techdocs.akamai.com/content-protector/reference/get-content-protection-rule-sequence
GetContentProtectionRuleSequence(ctx context.Context, params GetContentProtectionRuleSequenceRequest) (*GetContentProtectionRuleSequenceResponse, error)
// UpdateContentProtectionRuleSequence https://techdocs.akamai.com/content-protector/reference/put-content-protection-rule-sequence
UpdateContentProtectionRuleSequence(ctx context.Context, params UpdateContentProtectionRuleSequenceRequest) (*UpdateContentProtectionRuleSequenceResponse, error)
}
// GetContentProtectionRuleSequenceRequest is used to retrieve content protection rule sequence
GetContentProtectionRuleSequenceRequest struct {
ConfigID int64
Version int64
SecurityPolicyID string
}
// GetContentProtectionRuleSequenceResponse contains the sequence of content protection rule
GetContentProtectionRuleSequenceResponse ContentProtectionRuleUUIDSequence
// UpdateContentProtectionRuleSequenceResponse contains the sequence of content protection rule
UpdateContentProtectionRuleSequenceResponse ContentProtectionRuleUUIDSequence
// UpdateContentProtectionRuleSequenceRequest is used to update content protection rule sequence
UpdateContentProtectionRuleSequenceRequest struct {
ConfigID int64
Version int64
SecurityPolicyID string
ContentProtectionRuleSequence ContentProtectionRuleUUIDSequence
}
// ContentProtectionRuleUUIDSequence is a sequence of UUIDs.
ContentProtectionRuleUUIDSequence struct {
ContentProtectionRuleSequence []string `json:"contentProtectionRuleSequence"`
}
)
// Validate validates a GetContentProtectionRuleSequenceRequest.
func (v GetContentProtectionRuleSequenceRequest) Validate() error {
return validation.Errors{
"ConfigID": validation.Validate(v.ConfigID, validation.Required),
"Version": validation.Validate(v.Version, validation.Required),
"SecurityPolicyID": validation.Validate(v.SecurityPolicyID, validation.Required),
}.Filter()
}
// Validate validates an UpdateContentProtectionRuleSequenceRequest.
func (v UpdateContentProtectionRuleSequenceRequest) Validate() error {
return validation.Errors{
"ConfigID": validation.Validate(v.ConfigID, validation.Required),
"Version": validation.Validate(v.Version, validation.Required),
"SecurityPolicyID": validation.Validate(v.SecurityPolicyID, validation.Required),
"ContentProtectionRuleSequence": validation.Validate(v.ContentProtectionRuleSequence.ContentProtectionRuleSequence, validation.Required),
}.Filter()
}
func (b *botman) GetContentProtectionRuleSequence(ctx context.Context, params GetContentProtectionRuleSequenceRequest) (*GetContentProtectionRuleSequenceResponse, error) {
logger := b.Log(ctx)
logger.Debug("GetContentProtectionRuleSequence")
if err := params.Validate(); err != nil {
return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error())
}
uri := fmt.Sprintf(
"/appsec/v1/configs/%d/versions/%d/security-policies/%s/content-protection-rule-sequence",
params.ConfigID,
params.Version,
params.SecurityPolicyID)
req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return nil, fmt.Errorf("failed to create GetContentProtectionRuleSequence request: %w", err)
}
var result GetContentProtectionRuleSequenceResponse
resp, err := b.Exec(req, &result)
if err != nil {
return nil, fmt.Errorf("GetContentProtectionRuleSequence request failed: %w", err)
}
defer session.CloseResponseBody(resp)
if resp.StatusCode != http.StatusOK {
return nil, b.Error(resp)
}
return &result, nil
}
func (b *botman) UpdateContentProtectionRuleSequence(ctx context.Context, params UpdateContentProtectionRuleSequenceRequest) (*UpdateContentProtectionRuleSequenceResponse, error) {
logger := b.Log(ctx)
logger.Debug("UpdateContentProtectionRuleSequence")
if err := params.Validate(); err != nil {
return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error())
}
putURL := fmt.Sprintf(
"/appsec/v1/configs/%d/versions/%d/security-policies/%s/content-protection-rule-sequence",
params.ConfigID,
params.Version,
params.SecurityPolicyID)
req, err := http.NewRequestWithContext(ctx, http.MethodPut, putURL, nil)
if err != nil {
return nil, fmt.Errorf("failed to create UpdateContentProtectionRuleSequence request: %w", err)
}
var result UpdateContentProtectionRuleSequenceResponse
resp, err := b.Exec(req, &result, params.ContentProtectionRuleSequence)
if err != nil {
return nil, fmt.Errorf("UpdateContentProtectionRuleSequence request failed: %w", err)
}
defer session.CloseResponseBody(resp)
if resp.StatusCode != http.StatusOK {
return nil, b.Error(resp)
}
return &result, nil
}