mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-10-01 01:14:26 +08:00
67 lines
2.2 KiB
Go
67 lines
2.2 KiB
Go
package cloudflare
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/goccy/go-json"
|
|
)
|
|
|
|
// AuthenticatedOriginPulls represents global AuthenticatedOriginPulls (tls_client_auth) metadata.
|
|
type AuthenticatedOriginPulls struct {
|
|
ID string `json:"id"`
|
|
Value string `json:"value"`
|
|
Editable bool `json:"editable"`
|
|
ModifiedOn time.Time `json:"modified_on"`
|
|
}
|
|
|
|
// AuthenticatedOriginPullsResponse represents the response from the global AuthenticatedOriginPulls (tls_client_auth) details endpoint.
|
|
type AuthenticatedOriginPullsResponse struct {
|
|
Response
|
|
Result AuthenticatedOriginPulls `json:"result"`
|
|
}
|
|
|
|
// GetAuthenticatedOriginPullsStatus returns the configuration details for global AuthenticatedOriginPulls (tls_client_auth).
|
|
//
|
|
// API reference: https://api.cloudflare.com/#zone-settings-get-tls-client-auth-setting
|
|
func (api *API) GetAuthenticatedOriginPullsStatus(ctx context.Context, zoneID string) (AuthenticatedOriginPulls, error) {
|
|
uri := fmt.Sprintf("/zones/%s/settings/tls_client_auth", zoneID)
|
|
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
|
|
if err != nil {
|
|
return AuthenticatedOriginPulls{}, err
|
|
}
|
|
var r AuthenticatedOriginPullsResponse
|
|
if err := json.Unmarshal(res, &r); err != nil {
|
|
return AuthenticatedOriginPulls{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
|
|
}
|
|
return r.Result, nil
|
|
}
|
|
|
|
// SetAuthenticatedOriginPullsStatus toggles whether global AuthenticatedOriginPulls is enabled for the zone.
|
|
//
|
|
// API reference: https://api.cloudflare.com/#zone-settings-change-tls-client-auth-setting
|
|
func (api *API) SetAuthenticatedOriginPullsStatus(ctx context.Context, zoneID string, enable bool) (AuthenticatedOriginPulls, error) {
|
|
uri := fmt.Sprintf("/zones/%s/settings/tls_client_auth", zoneID)
|
|
var val string
|
|
if enable {
|
|
val = "on"
|
|
} else {
|
|
val = "off"
|
|
}
|
|
params := struct {
|
|
Value string `json:"value"`
|
|
}{
|
|
Value: val,
|
|
}
|
|
res, err := api.makeRequestContext(ctx, http.MethodPatch, uri, params)
|
|
if err != nil {
|
|
return AuthenticatedOriginPulls{}, err
|
|
}
|
|
var r AuthenticatedOriginPullsResponse
|
|
if err := json.Unmarshal(res, &r); err != nil {
|
|
return AuthenticatedOriginPulls{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
|
|
}
|
|
return r.Result, nil
|
|
}
|