mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-10-06 03:46:34 +08:00
50 lines
1.7 KiB
Go
50 lines
1.7 KiB
Go
package cloudflare
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
)
|
|
|
|
var (
|
|
// ErrMissingIP is for when ipv4 or ipv6 indicator was given but ip is missing.
|
|
ErrMissingIP = errors.New("ip is required when using 'ipv4' or 'ipv6' indicator type and is missing")
|
|
// ErrMissingURL is for when url or domain indicator was given but url is missing.
|
|
ErrMissingURL = errors.New("url is required when using 'domain' or 'url' indicator type and is missing")
|
|
)
|
|
|
|
// MisCategorizationParameters represents the parameters for a miscategorization request.
|
|
type MisCategorizationParameters struct {
|
|
AccountID string
|
|
IndicatorType string `json:"indicator_type,omitempty"`
|
|
IP string `json:"ip,omitempty"`
|
|
URL string `json:"url,omitempty"`
|
|
ContentAdds []int `json:"content_adds,omitempty"`
|
|
ContentRemoves []int `json:"content_removes,omitempty"`
|
|
SecurityAdds []int `json:"security_adds,omitempty"`
|
|
SecurityRemoves []int `json:"security_removes,omitempty"`
|
|
}
|
|
|
|
// CreateMiscategorization creates a miscatergorization.
|
|
//
|
|
// API Reference: https://api.cloudflare.com/#miscategorization-create-miscategorization
|
|
func (api *API) CreateMiscategorization(ctx context.Context, params MisCategorizationParameters) error {
|
|
if params.AccountID == "" {
|
|
return ErrMissingAccountID
|
|
}
|
|
if (params.IndicatorType == "ipv6" || params.IndicatorType == "ipv4") && params.IP == "" {
|
|
return ErrMissingIP
|
|
}
|
|
if (params.IndicatorType == "domain" || params.IndicatorType == "url") && params.URL == "" {
|
|
return ErrMissingURL
|
|
}
|
|
|
|
uri := fmt.Sprintf("/accounts/%s/intel/miscategorization", params.AccountID)
|
|
_, err := api.makeRequestContext(ctx, http.MethodPost, uri, params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|