Skip to content

Commit 093f835

Browse files
Merge pull request #134 from akamai/release/v2.5.0
Release/v2.5.0
2 parents 518fdb7 + e8e6029 commit 093f835

File tree

71 files changed

+5414
-4560
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+5414
-4560
lines changed

CHANGELOG.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,40 @@
11
# EDGEGRID GOLANG RELEASE NOTES
22

3+
## 2.5.0 (Jun 15, 2021)
4+
5+
#### BREAKING CHANGES:
6+
* APPSEC
7+
* The following have been removed, togther with their unit tests and test data:
8+
* pkg/appsec/attack_group_action.go
9+
* pkg/appsec/attack_group_condition_exception.go
10+
* pkg/appsec/eval_rule_action.go
11+
* pkg/appsec/eval_rule_condition_exception.go
12+
* pkg/appsec/rule_action.go
13+
* pkg/appsec/rule_condition_exception.go
14+
15+
#### BUG FIXES:
16+
* DNSv2
17+
* Fixed parsing SVCB, HTTPS rdata.
18+
19+
#### FEATURES/ENHANCEMENTS:
20+
* [IMPORTANT] CPS - Added Certificate Provisioning API support
21+
* Enrollments - create, read, update, delete enrollments
22+
* Change status API - get change status, cancel change
23+
* DV certificate API - get and acknowledge DV challenges
24+
* Pre verification warnings - get and acknowledge pre verification warnings
25+
26+
* APPSEC
27+
* The following have been added, together with their unit tests and test data:
28+
* pkg/appsec/api_constraints_protection.go
29+
* pkg/appsec/advanced_settings_pragma_header.go
30+
* pkg/appsec/attack_group.go
31+
* pkg/appsec/eval_rule.go
32+
* pkg/appsec/rule.go
33+
* pkg/appsec/ip_geo_protection.go
34+
335
## 2.4.1 (Apr 19, 2021)
436

5-
#### BUG FIXES
37+
#### BUG FIXES:
638

739
* APPSEC
840
* Suppress 'null' text on output of empty/false values
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
package appsec
2+
3+
import (
4+
"context"
5+
"encoding/json"
6+
"fmt"
7+
"net/http"
8+
9+
validation "github.com/go-ozzo/ozzo-validation/v4"
10+
)
11+
12+
// AdvancedSettingsPragma represents a collection of AdvancedSettingsPragma
13+
//
14+
// See: AdvancedSettingsPragma.GetAdvancedSettingsPragma()
15+
// API Docs: // appsec v1
16+
//
17+
// https://developer.akamai.com/api/cloud_security/application_security/v1.html
18+
19+
type (
20+
// AdvancedSettingsPragma contains operations available on AdvancedSettingsPragma resource
21+
// See: // appsec v1
22+
//
23+
// https://developer.akamai.com/api/cloud_security/application_security/v1.html#getpragmaheaderconfiguration
24+
AdvancedSettingsPragma interface {
25+
GetAdvancedSettingsPragma(ctx context.Context, params GetAdvancedSettingsPragmaRequest) (*GetAdvancedSettingsPragmaResponse, error)
26+
UpdateAdvancedSettingsPragma(ctx context.Context, params UpdateAdvancedSettingsPragmaRequest) (*UpdateAdvancedSettingsPragmaResponse, error)
27+
}
28+
29+
GetAdvancedSettingsPragmaRequest struct {
30+
ConfigID int `json:"-"`
31+
Version int `json:"-"`
32+
PolicyID string `json:"-"`
33+
Group string `json:"group"`
34+
}
35+
36+
GetAdvancedSettingsPragmaResponse struct {
37+
Action string `json:"action,,omitempty"`
38+
ConditionOperator string `json:"conditionOperator,omitempty"`
39+
ExcludeCondition []ExcludeCondition `json:"excludeCondition,omitempty"`
40+
}
41+
42+
ExcludeCondition struct {
43+
Type string `json:"type"`
44+
PositiveMatch bool `json:"positiveMatch"`
45+
Header string `json:"header"`
46+
Value []string `json:"value"`
47+
Name string `json:"name"`
48+
ValueCase bool `json:"valueCase"`
49+
ValueWildcard bool `json:"valueWildcard"`
50+
UseHeaders bool `json:"useHeaders"`
51+
}
52+
53+
UpdateAdvancedSettingsPragmaRequest struct {
54+
ConfigID int `json:"-"`
55+
Version int `json:"-"`
56+
PolicyID string `json:"-"`
57+
JsonPayloadRaw json.RawMessage `json:"-"`
58+
}
59+
UpdateAdvancedSettingsPragmaResponse struct {
60+
Action string `json:"action"`
61+
ConditionOperator string `json:"conditionOperator"`
62+
ExcludeCondition []ExcludeCondition `json:"excludeCondition"`
63+
}
64+
)
65+
66+
// Validate validates GetAdvancedSettingsPragmaRequest
67+
func (v GetAdvancedSettingsPragmaRequest) Validate() error {
68+
return validation.Errors{
69+
"ConfigID": validation.Validate(v.ConfigID, validation.Required),
70+
"Version": validation.Validate(v.Version, validation.Required),
71+
}.Filter()
72+
}
73+
74+
// Validate validates UpdateAdvancedSettingsPragmaRequest
75+
func (v UpdateAdvancedSettingsPragmaRequest) Validate() error {
76+
return validation.Errors{
77+
"ConfigID": validation.Validate(v.ConfigID, validation.Required),
78+
"Version": validation.Validate(v.Version, validation.Required),
79+
}.Filter()
80+
}
81+
82+
func (p *appsec) GetAdvancedSettingsPragma(ctx context.Context, params GetAdvancedSettingsPragmaRequest) (*GetAdvancedSettingsPragmaResponse, error) {
83+
if err := params.Validate(); err != nil {
84+
return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error())
85+
}
86+
87+
logger := p.Log(ctx)
88+
logger.Debug("GetAdvancedSettingsPragma")
89+
90+
var rval GetAdvancedSettingsPragmaResponse
91+
var uri string
92+
93+
if params.PolicyID != "" {
94+
uri = fmt.Sprintf(
95+
"/appsec/v1/configs/%d/versions/%d/security-policies/%s/advanced-settings/pragma-header",
96+
params.ConfigID,
97+
params.Version,
98+
params.PolicyID)
99+
} else {
100+
uri = fmt.Sprintf(
101+
"/appsec/v1/configs/%d/versions/%d/advanced-settings/pragma-header",
102+
params.ConfigID,
103+
params.Version)
104+
}
105+
106+
req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil)
107+
if err != nil {
108+
return nil, fmt.Errorf("failed to get getadvancedsettingpragma request: %w", err)
109+
}
110+
111+
req.Header.Set("Content-Type", "application/json")
112+
113+
resp, err := p.Exec(req, &rval)
114+
if err != nil {
115+
return nil, fmt.Errorf("getadvancedsettingspragma request failed: %w", err)
116+
}
117+
118+
if resp.StatusCode != http.StatusOK {
119+
return nil, p.Error(resp)
120+
}
121+
122+
return &rval, nil
123+
124+
}
125+
126+
// Update will update a AdvancedSettingsPragma.
127+
//
128+
// API Docs: // appsec v1
129+
//
130+
// https://developer.akamai.com/api/cloud_security/application_security/v1.html#putadvancedsettingsprefetch
131+
132+
func (p *appsec) UpdateAdvancedSettingsPragma(ctx context.Context, params UpdateAdvancedSettingsPragmaRequest) (*UpdateAdvancedSettingsPragmaResponse, error) {
133+
if err := params.Validate(); err != nil {
134+
return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error())
135+
}
136+
137+
logger := p.Log(ctx)
138+
logger.Debug("UpdateAdvancedSettingsPragma")
139+
140+
var uri string
141+
if params.PolicyID != "" {
142+
uri = fmt.Sprintf(
143+
"/appsec/v1/configs/%d/versions/%d/security-policies/%s/advanced-settings/pragma-header",
144+
params.ConfigID,
145+
params.Version,
146+
params.PolicyID)
147+
} else {
148+
uri = fmt.Sprintf(
149+
"/appsec/v1/configs/%d/versions/%d/advanced-settings/pragma-header",
150+
params.ConfigID,
151+
params.Version)
152+
}
153+
154+
req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil)
155+
if err != nil {
156+
return nil, fmt.Errorf("failed to create create AdvancedSettingsPragmarequest: %w", err)
157+
}
158+
159+
var rval UpdateAdvancedSettingsPragmaResponse
160+
resp, err := p.Exec(req, &rval, params.JsonPayloadRaw)
161+
if err != nil {
162+
return nil, fmt.Errorf("create AdvancedSettingsPragma request failed: %w", err)
163+
}
164+
165+
if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated {
166+
return nil, p.Error(resp)
167+
}
168+
169+
return &rval, nil
170+
}

0 commit comments

Comments
 (0)