mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-10-06 11:56:50 +08:00
83 lines
2.7 KiB
Go
83 lines
2.7 KiB
Go
package cloudflare
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/goccy/go-json"
|
|
)
|
|
|
|
type WorkersAccountSettings struct {
|
|
DefaultUsageModel string `json:"default_usage_model,omitempty"`
|
|
GreenCompute bool `json:"green_compute,omitempty"`
|
|
}
|
|
|
|
type CreateWorkersAccountSettingsParameters struct {
|
|
DefaultUsageModel string `json:"default_usage_model,omitempty"`
|
|
GreenCompute bool `json:"green_compute,omitempty"`
|
|
}
|
|
|
|
type CreateWorkersAccountSettingsResponse struct {
|
|
Response
|
|
Result WorkersAccountSettings
|
|
}
|
|
|
|
type WorkersAccountSettingsParameters struct{}
|
|
|
|
type WorkersAccountSettingsResponse struct {
|
|
Response
|
|
Result WorkersAccountSettings
|
|
}
|
|
|
|
// CreateWorkersAccountSettings sets the account settings for Workers.
|
|
//
|
|
// API reference: https://developers.cloudflare.com/api/operations/worker-account-settings-create-worker-account-settings
|
|
func (api *API) CreateWorkersAccountSettings(ctx context.Context, rc *ResourceContainer, params CreateWorkersAccountSettingsParameters) (WorkersAccountSettings, error) {
|
|
if rc.Identifier == "" {
|
|
return WorkersAccountSettings{}, ErrMissingAccountID
|
|
}
|
|
|
|
if rc.Level != AccountRouteLevel {
|
|
return WorkersAccountSettings{}, ErrRequiredAccountLevelResourceContainer
|
|
}
|
|
|
|
uri := fmt.Sprintf("/accounts/%s/workers/account-settings", rc.Identifier)
|
|
res, err := api.makeRequestContext(ctx, http.MethodPut, uri, params)
|
|
if err != nil {
|
|
return WorkersAccountSettings{}, err
|
|
}
|
|
|
|
var workersAccountSettingsResponse CreateWorkersAccountSettingsResponse
|
|
if err := json.Unmarshal(res, &workersAccountSettingsResponse); err != nil {
|
|
return WorkersAccountSettings{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
|
|
}
|
|
|
|
return workersAccountSettingsResponse.Result, nil
|
|
}
|
|
|
|
// WorkersAccountSettings returns the current account settings for Workers.
|
|
//
|
|
// API reference: https://developers.cloudflare.com/api/operations/worker-account-settings-fetch-worker-account-settings
|
|
func (api *API) WorkersAccountSettings(ctx context.Context, rc *ResourceContainer, params WorkersAccountSettingsParameters) (WorkersAccountSettings, error) {
|
|
if rc.Identifier == "" {
|
|
return WorkersAccountSettings{}, ErrMissingAccountID
|
|
}
|
|
|
|
if rc.Level != AccountRouteLevel {
|
|
return WorkersAccountSettings{}, ErrRequiredAccountLevelResourceContainer
|
|
}
|
|
|
|
uri := fmt.Sprintf("/accounts/%s/workers/account-settings", rc.Identifier)
|
|
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, params)
|
|
if err != nil {
|
|
return WorkersAccountSettings{}, err
|
|
}
|
|
|
|
var workersAccountSettingsResponse CreateWorkersAccountSettingsResponse
|
|
if err := json.Unmarshal(res, &workersAccountSettingsResponse); err != nil {
|
|
return WorkersAccountSettings{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
|
|
}
|
|
|
|
return workersAccountSettingsResponse.Result, nil
|
|
}
|