mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-10-06 03:46:34 +08:00
127 lines
3.9 KiB
Go
127 lines
3.9 KiB
Go
package cloudflare
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/goccy/go-json"
|
|
)
|
|
|
|
var ErrMissingUID = errors.New("required UID missing")
|
|
|
|
type AccessCustomPageType string
|
|
|
|
const (
|
|
Forbidden AccessCustomPageType = "forbidden"
|
|
IdentityDenied AccessCustomPageType = "identity_denied"
|
|
)
|
|
|
|
type AccessCustomPage struct {
|
|
// The HTML content of the custom page.
|
|
CustomHTML string `json:"custom_html,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
AppCount int `json:"app_count,omitempty"`
|
|
Type AccessCustomPageType `json:"type,omitempty"`
|
|
UID string `json:"uid,omitempty"`
|
|
}
|
|
|
|
type AccessCustomPageListResponse struct {
|
|
Response
|
|
Result []AccessCustomPage `json:"result"`
|
|
ResultInfo `json:"result_info"`
|
|
}
|
|
|
|
type AccessCustomPageResponse struct {
|
|
Response
|
|
Result AccessCustomPage `json:"result"`
|
|
}
|
|
|
|
type ListAccessCustomPagesParams struct{}
|
|
|
|
type CreateAccessCustomPageParams struct {
|
|
CustomHTML string `json:"custom_html,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
Type AccessCustomPageType `json:"type,omitempty"`
|
|
}
|
|
|
|
type UpdateAccessCustomPageParams struct {
|
|
CustomHTML string `json:"custom_html,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
Type AccessCustomPageType `json:"type,omitempty"`
|
|
UID string `json:"uid,omitempty"`
|
|
}
|
|
|
|
func (api *API) ListAccessCustomPages(ctx context.Context, rc *ResourceContainer, params ListAccessCustomPagesParams) ([]AccessCustomPage, error) {
|
|
uri := buildURI(fmt.Sprintf("/%s/%s/access/custom_pages", rc.Level, rc.Identifier), params)
|
|
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
|
|
if err != nil {
|
|
return []AccessCustomPage{}, err
|
|
}
|
|
|
|
var customPagesResponse AccessCustomPageListResponse
|
|
err = json.Unmarshal(res, &customPagesResponse)
|
|
if err != nil {
|
|
return []AccessCustomPage{}, err
|
|
}
|
|
return customPagesResponse.Result, nil
|
|
}
|
|
|
|
func (api *API) GetAccessCustomPage(ctx context.Context, rc *ResourceContainer, id string) (AccessCustomPage, error) {
|
|
uri := fmt.Sprintf("/%s/%s/access/custom_pages/%s", rc.Level, rc.Identifier, id)
|
|
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
|
|
if err != nil {
|
|
return AccessCustomPage{}, err
|
|
}
|
|
|
|
var customPageResponse AccessCustomPageResponse
|
|
err = json.Unmarshal(res, &customPageResponse)
|
|
if err != nil {
|
|
return AccessCustomPage{}, err
|
|
}
|
|
return customPageResponse.Result, nil
|
|
}
|
|
|
|
func (api *API) CreateAccessCustomPage(ctx context.Context, rc *ResourceContainer, params CreateAccessCustomPageParams) (AccessCustomPage, error) {
|
|
uri := fmt.Sprintf("/%s/%s/access/custom_pages", rc.Level, rc.Identifier)
|
|
res, err := api.makeRequestContext(ctx, http.MethodPost, uri, params)
|
|
if err != nil {
|
|
return AccessCustomPage{}, err
|
|
}
|
|
|
|
var customPageResponse AccessCustomPageResponse
|
|
err = json.Unmarshal(res, &customPageResponse)
|
|
if err != nil {
|
|
return AccessCustomPage{}, err
|
|
}
|
|
return customPageResponse.Result, nil
|
|
}
|
|
|
|
func (api *API) DeleteAccessCustomPage(ctx context.Context, rc *ResourceContainer, id string) error {
|
|
uri := fmt.Sprintf("/%s/%s/access/custom_pages/%s", rc.Level, rc.Identifier, id)
|
|
_, err := api.makeRequestContext(ctx, http.MethodDelete, uri, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (api *API) UpdateAccessCustomPage(ctx context.Context, rc *ResourceContainer, params UpdateAccessCustomPageParams) (AccessCustomPage, error) {
|
|
if params.UID == "" {
|
|
return AccessCustomPage{}, ErrMissingUID
|
|
}
|
|
|
|
uri := fmt.Sprintf("/%s/%s/access/custom_pages/%s", rc.Level, rc.Identifier, params.UID)
|
|
res, err := api.makeRequestContext(ctx, http.MethodPut, uri, params)
|
|
if err != nil {
|
|
return AccessCustomPage{}, err
|
|
}
|
|
|
|
var customPageResponse AccessCustomPageResponse
|
|
err = json.Unmarshal(res, &customPageResponse)
|
|
if err != nil {
|
|
return AccessCustomPage{}, err
|
|
}
|
|
return customPageResponse.Result, nil
|
|
}
|