mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-11-08 07:20:49 +08:00
76 lines
2.5 KiB
Go
76 lines
2.5 KiB
Go
package cloudflare
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/goccy/go-json"
|
|
)
|
|
|
|
// PageShield represents the page shield object minus any timestamps.
|
|
type PageShield struct {
|
|
Enabled *bool `json:"enabled,omitempty"`
|
|
UseCloudflareReportingEndpoint *bool `json:"use_cloudflare_reporting_endpoint,omitempty"`
|
|
UseConnectionURLPath *bool `json:"use_connection_url_path,omitempty"`
|
|
}
|
|
|
|
type UpdatePageShieldSettingsParams struct {
|
|
Enabled *bool `json:"enabled,omitempty"`
|
|
UseCloudflareReportingEndpoint *bool `json:"use_cloudflare_reporting_endpoint,omitempty"`
|
|
UseConnectionURLPath *bool `json:"use_connection_url_path,omitempty"`
|
|
}
|
|
|
|
// PageShieldSettings represents the page shield settings for a zone.
|
|
type PageShieldSettings struct {
|
|
PageShield
|
|
UpdatedAt string `json:"updated_at"`
|
|
}
|
|
|
|
// PageShieldSettingsResponse represents the response from the page shield settings endpoint.
|
|
type PageShieldSettingsResponse struct {
|
|
PageShield PageShieldSettings `json:"result"`
|
|
Response
|
|
}
|
|
|
|
type GetPageShieldSettingsParams struct{}
|
|
|
|
// GetPageShieldSettings returns the page shield settings for a zone.
|
|
//
|
|
// API documentation: https://developers.cloudflare.com/api/operations/page-shield-get-page-shield-settings
|
|
func (api *API) GetPageShieldSettings(ctx context.Context, rc *ResourceContainer, params GetPageShieldSettingsParams) (*PageShieldSettingsResponse, error) {
|
|
uri := fmt.Sprintf("/zones/%s/page_shield", rc.Identifier)
|
|
|
|
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var psResponse PageShieldSettingsResponse
|
|
err = json.Unmarshal(res, &psResponse)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("%s: %w", errUnmarshalError, err)
|
|
}
|
|
|
|
return &psResponse, nil
|
|
}
|
|
|
|
// UpdatePageShieldSettings updates the page shield settings for a zone.
|
|
//
|
|
// API documentation: https://developers.cloudflare.com/api/operations/page-shield-update-page-shield-settings
|
|
func (api *API) UpdatePageShieldSettings(ctx context.Context, rc *ResourceContainer, params UpdatePageShieldSettingsParams) (*PageShieldSettingsResponse, error) {
|
|
uri := fmt.Sprintf("/zones/%s/page_shield", rc.Identifier)
|
|
|
|
res, err := api.makeRequestContext(ctx, http.MethodPut, uri, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var psResponse PageShieldSettingsResponse
|
|
err = json.Unmarshal(res, &psResponse)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("%s: %w", errUnmarshalError, err)
|
|
}
|
|
|
|
return &psResponse, nil
|
|
}
|