/
page_shield_policies.go
140 lines (114 loc) · 4.46 KB
/
page_shield_policies.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
133
134
135
136
137
138
139
140
package cloudflare
import (
"context"
"fmt"
"net/http"
"github.com/goccy/go-json"
)
// PageShieldPolicy represents a page shield policy.
type PageShieldPolicy struct {
Action string `json:"action"`
Description string `json:"description"`
Enabled *bool `json:"enabled,omitempty"`
Expression string `json:"expression"`
ID string `json:"id"`
Value string `json:"value"`
}
type CreatePageShieldPolicyParams struct {
Action string `json:"action"`
Description string `json:"description"`
Enabled *bool `json:"enabled,omitempty"`
Expression string `json:"expression"`
ID string `json:"id"`
Value string `json:"value"`
}
type UpdatePageShieldPolicyParams struct {
Action string `json:"action"`
Description string `json:"description"`
Enabled *bool `json:"enabled,omitempty"`
Expression string `json:"expression"`
ID string `json:"id"`
Value string `json:"value"`
}
// ListPageShieldPoliciesResponse represents the response from the list page shield policies endpoint.
type ListPageShieldPoliciesResponse struct {
Result []PageShieldPolicy `json:"result"`
Response
ResultInfo `json:"result_info"`
}
type ListPageShieldPoliciesParams struct{}
// ListPageShieldPolicies lists all page shield policies for a zone.
//
// API documentation: https://developers.cloudflare.com/api/operations/page-shield-list-page-shield-policies
func (api *API) ListPageShieldPolicies(ctx context.Context, rc *ResourceContainer, params ListPageShieldPoliciesParams) ([]PageShieldPolicy, ResultInfo, error) {
path := fmt.Sprintf("/zones/%s/page_shield/policies", rc.Identifier)
res, err := api.makeRequestContext(ctx, http.MethodGet, path, nil)
if err != nil {
return nil, ResultInfo{}, err
}
var psResponse ListPageShieldPoliciesResponse
err = json.Unmarshal(res, &psResponse)
if err != nil {
return nil, ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
return psResponse.Result, psResponse.ResultInfo, nil
}
// CreatePageShieldPolicy creates a page shield policy for a zone.
//
// API documentation: https://developers.cloudflare.com/api/operations/page-shield-create-page-shield-policy
func (api *API) CreatePageShieldPolicy(ctx context.Context, rc *ResourceContainer, params CreatePageShieldPolicyParams) (*PageShieldPolicy, error) {
path := fmt.Sprintf("/zones/%s/page_shield/policies", rc.Identifier)
res, err := api.makeRequestContext(ctx, http.MethodPost, path, params)
if err != nil {
return nil, err
}
var psResponse PageShieldPolicy
err = json.Unmarshal(res, &psResponse)
if err != nil {
return nil, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
return &psResponse, nil
}
// DeletePageShieldPolicy deletes a page shield policy for a zone.
//
// API documentation: https://developers.cloudflare.com/api/operations/page-shield-delete-page-shield-policy
func (api *API) DeletePageShieldPolicy(ctx context.Context, rc *ResourceContainer, policyID string) error {
path := fmt.Sprintf("/zones/%s/page_shield/policies/%s", rc.Identifier, policyID)
_, err := api.makeRequestContext(ctx, http.MethodDelete, path, nil)
if err != nil {
return err
}
return nil
}
// GetPageShieldPolicy gets a page shield policy for a zone.
//
// API documentation: https://developers.cloudflare.com/api/operations/page-shield-get-page-shield-policy
func (api *API) GetPageShieldPolicy(ctx context.Context, rc *ResourceContainer, policyID string) (*PageShieldPolicy, error) {
path := fmt.Sprintf("/zones/%s/page_shield/policies/%s", rc.Identifier, policyID)
res, err := api.makeRequestContext(ctx, http.MethodGet, path, nil)
if err != nil {
return nil, err
}
var psResponse PageShieldPolicy
err = json.Unmarshal(res, &psResponse)
if err != nil {
return nil, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
return &psResponse, nil
}
// UpdatePageShieldPolicy updates a page shield policy for a zone.
//
// API documentation: https://developers.cloudflare.com/api/operations/page-shield-update-page-shield-policy
func (api *API) UpdatePageShieldPolicy(ctx context.Context, rc *ResourceContainer, params UpdatePageShieldPolicyParams) (*PageShieldPolicy, error) {
path := fmt.Sprintf("/zones/%s/page_shield/policies/%s", rc.Identifier, params.ID)
res, err := api.makeRequestContext(ctx, http.MethodPut, path, params)
if err != nil {
return nil, err
}
var psResponse PageShieldPolicy
err = json.Unmarshal(res, &psResponse)
if err != nil {
return nil, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
return &psResponse, nil
}