bunny

package module
v0.0.0-...-dde5bf4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 7, 2024 License: MIT Imports: 13 Imported by: 3

README

bunny-go

CI Go Report Card GoDoc

bunny-go is an unofficial Go package to interact with the Bunny.net HTTP API.

It aims to be a low-level API that represents the Bunny API as close as possible.

The package only deviates from the API when it is necessary to prevent confusions.

Features

The following API Endpoints are supported:

  • bunny.net API
    • Billing
    • Pull Zone
      • Add
      • Update
      • Delete
      • Get
      • List
      • Delete Edge Rule
      • Add/Update Edge Rule
      • Set Edge Rule Enabled
      • Get Statistics
      • Purge Cache
      • Load Free Certificate
      • Add Custom Certificate
      • Remove Certificate
      • Add Custom Hostname
      • Remove Custom Hostname
      • Set Force SSL
      • Reset Token Key
      • Add Allowed Referer
      • Remove Allowed Referer
      • Add Blocked Referer
      • Remove Blocked Referer
      • Add Blocked IP
      • Remove Blocked IP
    • Purge
    • Statistics
    • Storage Zone
      • List Storage Zones
      • Add Storage Zone
      • Get Storage Zone
      • Update Storage Zone
      • Delete Storage Zone
      • Reset Password
      • Reset Read-Only Password
  • User
  • DNS Zone
    • List DNS Zones
    • Add DNS Zone
    • Get DNS Zone
    • Update DNS Zones
    • Delete DNS Zone
    • Export DNS Zone
    • Get DNS Query Statistics
    • Add DNS Record
    • Update DNS Record
    • Delete DNS Record
    • Recheck DNS Configuration
    • Dismiss DNS Configuration Notice
    • Import DNS Records
  • Stream Video Library
    • List Video Libraries
    • Add Video Library
    • Get Video Library
    • Update Video Library
    • Delete Video Library
    • Reset Password
    • Reset Password
    • Add Watermark
    • Delete Watermark
    • Add Allowed Referer
    • Remove Allowed Referer
    • Add Blocked Referer
    • Remove Blocked Referer
  • Edge Storage API

Example

See client_example_test.go

Design Principles

  • URL parameters are always passed by value as method parameter.
  • Data that is sent in the HTTP body is passed as struct pointer to API methods.
  • Pointers instead of values are used to represent fields in body message structs.
    The bunny.net API does not define which values are assumed if a field is omitted in a request. Using pointers allows to distinguish between empty fields and Golang's default values for types. This prevents discrepancy between the interpretation of missing fields of the bunny.net API and bunny-go. Without using pointers it is for example not possible to distinguish between a missing integer field in a JSON message and an integer that has a 0 value.
  • Message field names should be as close as possible to the JSON message field names. Exception are permitted if the field in the JSON messages are inconsistent and different names are used in the API for the same setting. If names are inconsistent, the variant that is closer to the naming in the Bunny.Net Admin Panel should be chosen. The exception must be documented in the godoc.

Development

Running Integration Tests

To run the integration test a Bunny.Net API Key is required.
The integration tests will create, modify and delete resources on your Bunny.Net account. Therefore it is strongly recommended to use a Bunny.Net account that is not used in production environments.
Bunny.Net might charge your account for certain API operations.
The integrationtest should remove all resources that they create. It can happen that cleaning up the resources fails and the account will contain test leftovers.

export BUNNY_API_KEY=MY-API-KEY
make integrationtests

Status

The package is under initial development and should be considered as unstable.

Documentation

Overview

Package bunny provides functionality to interact with the Bunny CDN HTTP API.

Example
apiKey := os.Getenv("BUNNY_API_KEY")
clt := bunny.NewClient(apiKey)

pz, err := clt.PullZone.Get(context.Background(), 1234)
if err != nil {
	log.Fatal(err)
}

fmt.Printf("pull zone name: %s\n", *pz.Name)
Output:

Index

Examples

Constants

View Source
const (
	// BaseURL is the base URL of the Bunny CDN HTTP API.
	BaseURL = "https://api.bunny.net"
	// AccessKeyHeaderKey is the name of the HTTP header that contains the Bunny API key.
	AccessKeyHeaderKey = "AccessKey"
	// DefaultUserAgent is the default value of the sent HTTP User-Agent header.
	DefaultUserAgent = "bunny-go"
)
View Source
const (
	DNSRecordTypeA     int = 0
	DNSRecordTypeAAAA  int = 1
	DNSRecordTypeCNAME int = 2
	DNSRecordTypeTXT   int = 3
	DNSRecordTypeMX    int = 4
	DNSRecordTypeRDR   int = 5 // Bunny.NET Redirect custom record
	DNSRecordTypePZ    int = 7 // Bunny.NET Pull Zone custom record
	DNSRecordTypeSRV   int = 8
	DNSRecordTypeCAA   int = 9
	DNSRecordTypePTR   int = 10
	DNSRecordTypeSCR   int = 11 // Bunny.NET Script custom record
	DNSRecordTypeNS    int = 12
)

Constants for the Type field of a DNS Record.

View Source
const (
	EdgeRuleActionTypeForceSSL int = iota
	EdgeRuleActionTypeRedirect
	EdgeRuleActionTypeOriginURL
	EdgeRuleActionTypeOverrideCacheTime
	EdgeRuleActionTypeBlockRequest
	EdgeRuleActionTypeSetResponseHeader
	EdgeRuleActionTypeSetRequestHeader
	EdgeRuleActionTypeForceDownload
	EdgeRuleActionTypeDisableTokenAuthentication
	EdgeRuleActionTypeEnableTokenAuthentication
	EdgeRuleActionTypeOverrideCacheTimePublic
	EdgeRuleActionTypeIgnoreQueryString
	EdgeRuleActionTypeDisableOptimizer
	EdgeRuleActionTypeForceCompression
	EdgeRuleActionTypeSetStatusCode
	EdgeRuleActionTypeBypassPermaCache
)

Constants for the ActionType fields of an EdgeRule.

View Source
const (
	EdgeRuleTriggerTypeURL int = iota
	EdgeRuleTriggerTypeRequestHeader
	EdgeRuleTriggerTypeResponseHeader
	EdgeRuleTriggerTypeURLExtension
	EdgeRuleTriggerTypeCountryCode
	EdgeRuleTriggerTypeRemoteIP
	EdgeRuleTriggerTypeURLQueryString
	EdgeRuleTriggerTypeRandomChance
	EdgeRuleTriggerTypeStatusCode
	EdgeRuleTriggerTypeRequestMethod
)

Constants for the Type field of an EdgeRuleTrigger.

View Source
const (
	PullZoneTypeStandard int = 1
	PullZoneTypeVolume   int = 2
)

Constants for the Type fields of a Pull Zone.

View Source
const (
	MatchingTypeAny int = iota
	MatchingTypeAll
	MatchingTypeNone
)

Constants for the values of the PatternMatchingType of EdgeRuleTrigger and TriggerMatchingType of an EdgeRule.

View Source
const (
	// DefaultPaginationPage is the default value that is used for
	// PaginationOptions.Page if it is unset.
	DefaultPaginationPage = 1
	// DefaultPaginationPerPage is the default value that is used for
	// PaginationOptions.PerPage if it is unset.
	DefaultPaginationPerPage = 1000
)

Variables

This section is empty.

Functions

This section is empty.

Types

type APIError

type APIError struct {
	HTTPError
	ErrorKey string `json:"ErrorKey"`
	Field    string `json:"Field"`
	Message  string `json:"Message"`
}

APIError represents an error that is returned by some Bunny API endpoints on failures.

func (*APIError) Error

func (e *APIError) Error() string

Error returns the string representation of the error. ErrorKey, Field and Message are omitted if they are empty.

type AddCustomHostnameOptions

type AddCustomHostnameOptions struct {
	// Hostname the hostname to add. (Required)
	Hostname *string `json:"Hostname,omitempty"`
}

AddCustomHostnameOptions represents the message that is sent to the Add Custom Hostname API Endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_addhostname

type AddOrUpdateDNSRecordOptions

type AddOrUpdateDNSRecordOptions struct {
	ID                     *int64                  `json:"Id,omitempty"`
	Type                   *int                    `json:"Type,omitempty"`
	TTL                    *int32                  `json:"Ttl,omitempty"`
	Value                  *string                 `json:"Value,omitempty"`
	Name                   *string                 `json:"Name,omitempty"`
	Weight                 *int32                  `json:"Weight,omitempty"`
	Priority               *int32                  `json:"Priority,omitempty"`
	Flags                  *int                    `json:"Flags,omitempty"`
	Tag                    *string                 `json:"Tag,omitempty"`
	Port                   *int32                  `json:"Port,omitempty"`
	PullZoneID             *int64                  `json:"PullZoneId,omitempty"`
	ScriptID               *int64                  `json:"ScriptId,omitempty"`
	Accelerated            *bool                   `json:"Accelerated,omitempty"`
	MonitorType            *int                    `json:"MonitorType,omitempty"`
	GeolocationLatitude    *float64                `json:"GeolocationLatitude,omitempty"`
	GeolocationLongitude   *float64                `json:"GeolocationLongitude,omitempty"`
	LatencyZone            *string                 `json:"LatencyZone,omitempty"`
	SmartRoutingType       *int                    `json:"SmartRoutingType,omitempty"`
	Disabled               *bool                   `json:"Disabled,omitempty"`
	EnvironmentalVariables []EnvironmentalVariable `json:"EnvironmentalVariables,omitempty"`
}

AddOrUpdateDNSRecordOptions represents the message that is sent to the Add DNS Record API Endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_addrecord

type AddOrUpdateEdgeRuleOptions

type AddOrUpdateEdgeRuleOptions struct {
	// GUID must only be set when updating an Edge Rule. When creating an
	// Edge Rule it must be unset. The API Endpoint will generate a GUID.
	GUID                *string            `json:"Guid,omitempty"`
	ActionType          *int               `json:"ActionType,omitempty"`
	ActionParameter1    *string            `json:"ActionParameter1,omitempty"`
	ActionParameter2    *string            `json:"ActionParameter2,omitempty"`
	Triggers            []*EdgeRuleTrigger `json:"Triggers,omitempty"`
	TriggerMatchingType *int               `json:"TriggerMatchingType,omitempty"`
	Description         *string            `json:"Description,omitempty"`
	Enabled             *bool              `json:"Enabled,omitempty"`
}

AddOrUpdateEdgeRuleOptions is the message that is sent to the Add/Update Edge Rule API Endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_addedgerule

type AuthenticationError

type AuthenticationError struct {
	Message string
}

AuthenticationError represents an Unauthorized (401) HTTP error.

func (*AuthenticationError) Error

func (e *AuthenticationError) Error() string

Error returns a textual representation of the error.

type Client

type Client struct {
	PullZone     *PullZoneService
	StorageZone  *StorageZoneService
	DNSZone      *DNSZoneService
	VideoLibrary *VideoLibraryService
	// contains filtered or unexported fields
}

Client is a Bunny CDN HTTP API Client.

func NewClient

func NewClient(apiKey string, opts ...Option) *Client

NewClient returns a new bunny.net API client. The APIKey can be found in on the Account Settings page.

Bunny.net API docs: https://support.bunny.net/hc/en-us/articles/360012168840-Where-do-I-find-my-API-key-

type DNSRecord

type DNSRecord struct {
	ID                     *int64                  `json:"Id,omitempty"`
	Type                   *int                    `json:"Type,omitempty"`
	TTL                    *int32                  `json:"Ttl,omitempty"`
	Value                  *string                 `json:"Value,omitempty"`
	Name                   *string                 `json:"Name,omitempty"`
	Weight                 *int32                  `json:"Weight,omitempty"`
	Priority               *int32                  `json:"Priority,omitempty"`
	Port                   *int32                  `json:"Port,omitempty"`
	Flags                  *int                    `json:"Flags,omitempty"`
	Tag                    *string                 `json:"Tag,omitempty"`
	Accelerated            *bool                   `json:"Accelerated,omitempty"`
	AcceleratedPullZoneID  *int64                  `json:"AcceleratedPullZoneId,omitempty"`
	LinkName               *string                 `json:"LinkName,omitempty"`
	IPGeoLocationInfo      *IPGeoLocationInfo      `json:"IPGeoLocationInfo,omitempty"`
	MonitorStatus          *int                    `json:"MonitorStatus,omitempty"`
	MonitorType            *int                    `json:"MonitorType,omitempty"`
	GeolocationLatitude    *float64                `json:"GeolocationLatitude,omitempty"`
	GeolocationLongitude   *float64                `json:"GeolocationLongitude,omitempty"`
	EnvironmentalVariables []EnvironmentalVariable `json:"EnvironmentalVariables,omitempty"`
	LatencyZone            *string                 `json:"LatencyZone,omitempty"`
	SmartRoutingType       *int                    `json:"SmartRoutingType,omitempty"`
	Disabled               *bool                   `json:"Disabled,omitempty"`
}

DNSRecord represents individual DNS records for a DNS Zone.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_index2 https://docs.bunny.net/reference/dnszonepublic_index

type DNSZone

type DNSZone struct {
	ID *int64 `json:"Id,omitempty"`

	Domain                        *string     `json:"Domain,omitempty"`
	Records                       []DNSRecord `json:"Records,omitempty"`
	DateModified                  *string     `json:"DateModified,omitempty"` // Timestamp
	DateCreated                   *string     `json:"DateCreated,omitempty"`  // Timestamp
	NameserversDetected           *bool       `json:"NameserversDetected,omitempty"`
	CustomNameserversEnabled      *bool       `json:"CustomNameserversEnabled,omitempty"`
	Nameserver1                   *string     `json:"Nameserver1,omitempty"`
	Nameserver2                   *string     `json:"Nameserver2,omitempty"`
	SoaEmail                      *string     `json:"SoaEmail,omitempty"`
	NameserversNextCheck          *string     `json:"NameserversNextCheck,omitempty"` // Timestamp
	LoggingEnabled                *bool       `json:"LoggingEnabled,omitempty"`
	LoggingIPAnonymizationEnabled *bool       `json:"LoggingIPAnonymizationEnabled,omitempty"`
	LogAnonymizationType          *int        `json:"LogAnonymizationType,omitempty"`
}

DNSZone represents the response of the List and Get DNS Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_index2 https://docs.bunny.net/reference/dnszonepublic_index

Timestamps formatted in YYYY-MM-DDTHH:MM:SS style. Golang time layout: 2006-01-02T15:04:05.

type DNSZoneService

type DNSZoneService struct {
	// contains filtered or unexported fields
}

DNSZoneService communicates with the /dnszone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_index

func (*DNSZoneService) Add

func (s *DNSZoneService) Add(ctx context.Context, opts *DNSZone) (*DNSZone, error)

Add creates a new DNS Zone. opts and the non-optional parameters in the struct must be specified for a successful request. On success the created DNSZone is returned.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_add

func (*DNSZoneService) AddDNSRecord

func (s *DNSZoneService) AddDNSRecord(ctx context.Context, dnsZoneID int64, opts *AddOrUpdateDNSRecordOptions) (*DNSRecord, error)

AddDNSRecord adds a DNS record to the DNS Zone.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_addrecord

func (*DNSZoneService) Delete

func (s *DNSZoneService) Delete(ctx context.Context, id int64) error

Delete removes the DNS Zone with the given id.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_delete

func (*DNSZoneService) DeleteDNSRecord

func (s *DNSZoneService) DeleteDNSRecord(ctx context.Context, dnsZoneID int64, dnsRecordID int64) error

DeleteDNSRecord removes a DNS Record of a DNS Zone.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_deleterecord

func (*DNSZoneService) Get

func (s *DNSZoneService) Get(ctx context.Context, id int64) (*DNSZone, error)

Get retrieves the DNS Zone with the given id.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_index2

func (*DNSZoneService) List

List retrieves the DNS Zones. If opts is nil, DefaultPaginationPerPage and DefaultPaginationPage will be used. if opts.Page or opts.PerPage is < 1, the related DefaultPagination values are used.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_index

func (*DNSZoneService) Update

func (s *DNSZoneService) Update(ctx context.Context, id int64, opts *DNSZoneUpdateOptions) (*DNSZone, error)

Update changes the configuration the DNS Zone with the given ID. The updated DNS Zone is returned. Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_update

func (*DNSZoneService) UpdateDNSRecord

func (s *DNSZoneService) UpdateDNSRecord(ctx context.Context, dnsZoneID int64, dnsRecordID int64, opts *AddOrUpdateDNSRecordOptions) error

UpdateDNSRecord updates a DNS record in the DNS Zone.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_updaterecord

type DNSZoneUpdateOptions

type DNSZoneUpdateOptions struct {
	CustomNameserversEnabled      *bool   `json:"CustomNameserversEnabled,omitempty"`
	Nameserver1                   *string `json:"Nameserver1,omitempty"`
	Nameserver2                   *string `json:"Nameserver2,omitempty"`
	SoaEmail                      *string `json:"SoaEmail,omitempty"`
	LoggingEnabled                *bool   `json:"LoggingEnabled,omitempty"`
	LoggingIPAnonymizationEnabled *bool   `json:"LoggingIPAnonymizationEnabled,omitempty"`
	LogAnonymizationType          *int    `json:"LogAnonymizationType,omitempty"`
}

DNSZoneUpdateOptions represents the request parameters for the Update DNS Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_update

type DNSZones

type DNSZones PaginationReply[DNSZone]

DNSZones represents the response of the List DNS Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/dnszonepublic_index

type EdgeRule

type EdgeRule struct {
	GUID                *string            `json:"Guid,omitempty"`
	ActionType          *int               `json:"ActionType,omitempty"`
	ActionParameter1    *string            `json:"ActionParameter1,omitempty"`
	ActionParameter2    *string            `json:"ActionParameter2,omitempty"`
	Triggers            []*EdgeRuleTrigger `json:"Triggers,omitempty"`
	TriggerMatchingType *int               `json:"TriggerMatchingType,omitempty"`
	Description         *string            `json:"Description,omitempty"`
	Enabled             *bool              `json:"Enabled,omitempty"`
}

EdgeRule represents an EdgeRule. It is returned from the Get and List Pull Zone and passed to the AddorUpdateEdgeRule API Endpoints.

type EdgeRuleTrigger

type EdgeRuleTrigger struct {
	Type                *int     `json:"Type,omitempty"`
	PatternMatches      []string `json:"PatternMatches,omitempty"`
	PatternMatchingType *int     `json:"PatternMatchingType,omitempty"`
	Parameter1          *string  `json:"Parameter1,omitempty"`
}

EdgeRuleTrigger represents the values of the Trigger field of an EdgeRule.

type EnvironmentalVariable

type EnvironmentalVariable struct {
	Name  *string `json:"Name,omitempty"`
	Value *string `json:"Value,omitempty"`
}

EnvironmentalVariable represents the environmental variables attached to a DNS record.

type HTTPError

type HTTPError struct {
	// RequestURL is the address to which the request was sent that caused the error.
	RequestURL string
	// The HTTP response status code.
	StatusCode int
	// The raw http response body. It's nil if the response had no body or it could not be received.
	RespBody []byte
	// Errors contain errors that happened while receiving or processing the HTTP response.
	Errors []error
}

HTTPError is returned by the Client when an unsuccessful HTTP response was returned or a response could not be processed. If the body of an unsuccessful HTTP response contains an APIError in the body, APIError is returned by the Client instead.

func (*HTTPError) Error

func (e *HTTPError) Error() string

Error returns a textual representation of the error.

type Hostname

type Hostname struct {
	ID               *int64  `json:"Id,omitempty"`
	Value            *string `json:"Value,omitempty"`
	ForceSSL         *bool   `json:"ForceSSL,omitempty"`
	IsSystemHostname *bool   `json:"IsSystemHostname,omitempty"`
	HasCertificate   *bool   `json:"HasCertificate,omitempty"`
}

Hostname represents a Hostname returned from the Get and List Pull Zone API Endpoints.

type IPGeoLocationInfo

type IPGeoLocationInfo struct {
	CountryCode      *string `json:"CountryCode,omitempty"`
	Country          *string `json:"Country,omitempty"`
	ASN              *int64  `json:"ASN,omitempty"`
	OrganizationName *string `json:"OrganizationName,omitempty"`
	City             *string `json:"City,omitempty"`
}

IPGeoLocationInfo represents the geolocation data attached to a DNS record.

type Logf

type Logf func(format string, v ...interface{})

Logf is a log function signature.

type Option

type Option func(*Client)

Option is a type for Client options.

func WithHTTPRequestLogger

func WithHTTPRequestLogger(logger Logf) Option

WithHTTPRequestLogger is an option to log all sent out HTTP-Request via a log function.

func WithHTTPResponseLogger

func WithHTTPResponseLogger(logger Logf) Option

WithHTTPResponseLogger is an option to log all received HTTP-Responses via a log function.

func WithLogger

func WithLogger(logger Logf) Option

WithLogger is an option to set a log function to which informal and warning messages will be logged.

func WithUserAgent

func WithUserAgent(userAgent string) Option

WithUserAgent is an option to specify the value of the User-Agent HTTP Header.

type PaginationOptions

type PaginationOptions struct {
	// Page the page to return
	Page int32 `url:"page,omitempty"`
	// PerPage how many entries to return per page
	PerPage int32 `url:"per_page,omitempty"`
}

PaginationOptions specifies optional parameters for List APIs.

type PaginationReply

type PaginationReply[Item any] struct {
	Items        []*Item `json:"Items,omitempty"`
	CurrentPage  *int32  `json:"CurrentPage"`
	TotalItems   *int32  `json:"TotalItems"`
	HasMoreItems *bool   `json:"HasMoreItems"`
}

PaginationReply represents the pagination information contained in a List API endpoint response.

Ex. Bunny.net API docs: - https://docs.bunny.net/reference/pullzonepublic_index - https://docs.bunny.net/reference/storagezonepublic_index

type PullZone

type PullZone struct {
	ID *int64 `json:"Id,omitempty"`

	AccessControlOriginHeaderExtensions []string `json:"AccessControlOriginHeaderExtensions,omitempty"`
	AddCanonicalHeader                  *bool    `json:"AddCanonicalHeader,omitempty"`
	AddHostHeader                       *bool    `json:"AddHostHeader,omitempty"`
	AllowedReferrers                    []string `json:"AllowedReferrers,omitempty"`
	AWSSigningEnabled                   *bool    `json:"AWSSigningEnabled,omitempty"`
	AWSSigningKey                       *string  `json:"AWSSigningKey,omitempty"`
	AWSSigningRegionName                *string  `json:"AWSSigningRegionName,omitempty"`
	AWSSigningSecret                    *string  `json:"AWSSigningSecret,omitempty"`
	BlockedCountries                    []string `json:"BlockedCountries,omitempty"`
	BlockedIPs                          []string `json:"BlockedIps,omitempty"`
	BlockedReferrers                    []string `json:"BlockedReferrers,omitempty"`
	BlockPostRequests                   *bool    `json:"BlockPostRequests,omitempty"`
	BlockRootPathAccess                 *bool    `json:"BlockRootPathAccess,omitempty"`
	BudgetRedirectedCountries           []string `json:"BudgetRedirectedCountries,omitempty"`
	BurstSize                           *int32   `json:"BurstSize,omitempty"`
	// CacheControlBrowserMaxAgeOverride is called
	// CacheControlPublicMaxAgeOverride in the API. Both names refer to the
	// same setting.
	CacheControlBrowserMaxAgeOverride     *int64      `json:"CacheControlPublicMaxAgeOverride,omitempty"`
	CacheControlMaxAgeOverride            *int64      `json:"CacheControlMaxAgeOverride,omitempty"`
	CacheErrorResponses                   *bool       `json:"CacheErrorResponses,omitempty"`
	CnameDomain                           *string     `json:"CnameDomain,omitempty"`
	ConnectionLimitPerIPCount             *int32      `json:"ConnectionLimitPerIPCount,omitempty"`
	CookieVaryParameters                  []string    `json:"CookieVaryParameters,omitempty"`
	DisableCookies                        *bool       `json:"DisableCookies,omitempty"`
	DNSRecordID                           *int64      `json:"DnsRecordId,omitempty"`
	DNSRecordValue                        *string     `json:"DnsRecordValue,omitempty"`
	DNSZoneID                             *int64      `json:"DnsZoneId,omitempty"`
	EdgeRules                             []*EdgeRule `json:"EdgeRules,omitempty"`
	EnableAccessControlOriginHeader       *bool       `json:"EnableAccessControlOriginHeader,omitempty"`
	EnableAutoSSL                         *bool       `json:"EnableAutoSSL,omitempty"`
	EnableAvifVary                        *bool       `json:"EnableAvifVary,omitempty"`
	EnableCacheSlice                      *bool       `json:"EnableCacheSlice,omitempty"`
	EnableCookieVary                      *bool       `json:"EnableCookieVary,omitempty"`
	EnableCountryCodeVary                 *bool       `json:"EnableCountryCodeVary,omitempty"`
	Enabled                               *bool       `json:"Enabled,omitempty"`
	EnableGeoZoneAF                       *bool       `json:"EnableGeoZoneAF,omitempty"`
	EnableGeoZoneAsia                     *bool       `json:"EnableGeoZoneASIA,omitempty"`
	EnableGeoZoneEU                       *bool       `json:"EnableGeoZoneEU,omitempty"`
	EnableGeoZoneSA                       *bool       `json:"EnableGeoZoneSA,omitempty"`
	EnableGeoZoneUS                       *bool       `json:"EnableGeoZoneUS,omitempty"`
	EnableHostnameVary                    *bool       `json:"EnableHostnameVary,omitempty"`
	EnableLogging                         *bool       `json:"EnableLogging,omitempty"`
	EnableMobileVary                      *bool       `json:"EnableMobileVary,omitempty"`
	EnableOriginShield                    *bool       `json:"EnableOriginShield,omitempty"`
	EnableSafeHop                         *bool       `json:"EnableSafeHop,omitempty"`
	EnableSmartCache                      *bool       `json:"EnableSmartCache,omitempty"`
	EnableTLS1                            *bool       `json:"EnableTLS1,omitempty"`
	EnableTLS11                           *bool       `json:"EnableTLS1_1,omitempty"`
	EnableWebPVary                        *bool       `json:"EnableWebPVary,omitempty"`
	ErrorPageCustomCode                   *string     `json:"ErrorPageCustomCode,omitempty"`
	ErrorPageEnableCustomCode             *bool       `json:"ErrorPageEnableCustomCode,omitempty"`
	ErrorPageEnableStatuspageWidget       *bool       `json:"ErrorPageEnableStatuspageWidget,omitempty"`
	ErrorPageStatuspageCode               *string     `json:"ErrorPageStatuspageCode,omitempty"`
	ErrorPageWhitelabel                   *bool       `json:"ErrorPageWhitelabel,omitempty"`
	FollowRedirects                       *bool       `json:"FollowRedirects,omitempty"`
	Hostnames                             []*Hostname `json:"Hostnames,omitempty"`
	IgnoreQueryStrings                    *bool       `json:"IgnoreQueryStrings,omitempty"`
	LimitRateAfter                        *float64    `json:"LimitRateAfter,omitempty"`
	LimitRatePerSecond                    *float64    `json:"LimitRatePerSecond,omitempty"`
	LogAnonymizationType                  *int        `json:"LogAnonymizationType,omitempty"`
	LogFormat                             *int32      `json:"LogFormat,omitempty"`
	LogForwardingEnabled                  *bool       `json:"LogForwardingEnabled,omitempty"`
	LogForwardingFormat                   *int        `json:"LogForwardingFormat,omitempty"`
	LogForwardingHostname                 *string     `json:"LogForwardingHostname,omitempty"`
	LogForwardingPort                     *int32      `json:"LogForwardingPort,omitempty"`
	LogForwardingProtocol                 *int        `json:"LogForwardingProtocol,omitempty"`
	LogForwardingToken                    *string     `json:"LogForwardingToken,omitempty"`
	LoggingIPAnonymizationEnabled         *bool       `json:"LoggingIPAnonymizationEnabled,omitempty"`
	LoggingSaveToStorage                  *bool       `json:"LoggingSaveToStorage,omitempty"`
	LoggingStorageZoneID                  *int64      `json:"LoggingStorageZoneId,omitempty"`
	MonthlyBandwidthLimit                 *int64      `json:"MonthlyBandwidthLimit,omitempty"`
	MonthlyBandwidthUsed                  *int64      `json:"MonthlyBandwidthUsed,omitempty"`
	MonthlyCharges                        *float64    `json:"MonthlyCharges,omitempty"`
	Name                                  *string     `json:"Name,omitempty"`
	OptimizerAutomaticOptimizationEnabled *bool       `json:"OptimizerAutomaticOptimizationEnabled,omitempty"`
	OptimizerDesktopMaxWidth              *int32      `json:"OptimizerDesktopMaxWidth,omitempty"`
	OptimizerEnabled                      *bool       `json:"OptimizerEnabled,omitempty"`
	OptimizerEnableManipulationEngine     *bool       `json:"OptimizerEnableManipulationEngine,omitempty"`
	OptimizerEnableWebP                   *bool       `json:"OptimizerEnableWebP,omitempty"`
	OptimizerForceClasses                 *bool       `json:"OptimizerForceClasses,omitempty"`
	OptimizerImageQuality                 *int32      `json:"OptimizerImageQuality,omitempty"`
	OptimizerMinifyCSS                    *bool       `json:"OptimizerMinifyCSS,omitempty"`
	OptimizerMinifyJavaScript             *bool       `json:"OptimizerMinifyJavaScript,omitempty"`
	OptimizerMobileImageQuality           *int32      `json:"OptimizerMobileImageQuality,omitempty"`
	OptimizerMobileMaxWidth               *int32      `json:"OptimizerMobileMaxWidth,omitempty"`
	OptimizerWatermarkEnabled             *bool       `json:"OptimizerWatermarkEnabled,omitempty"`
	OptimizerWatermarkMinImageSize        *int32      `json:"OptimizerWatermarkMinImageSize,omitempty"`
	OptimizerWatermarkOffset              *float64    `json:"OptimizerWatermarkOffset,omitempty"`
	OptimizerWatermarkPosition            *int        `json:"OptimizerWatermarkPosition,omitempty"`
	OptimizerWatermarkURL                 *string     `json:"OptimizerWatermarkUrl,omitempty"`
	OriginConnectTimeout                  *int32      `json:"OriginConnectTimeout,omitempty"`
	OriginHostHeader                      *string     `json:"OriginHostHeader,omitempty"`
	OriginResponseTimeout                 *int32      `json:"OriginResponseTimeout,omitempty"`
	OriginRetries                         *int32      `json:"OriginRetries,omitempty"`
	OriginRetry5xxResponses               *bool       `json:"OriginRetry5xxResponses,omitempty"`
	OriginRetryConnectionTimeout          *bool       `json:"OriginRetryConnectionTimeout,omitempty"`
	OriginRetryDelay                      *int32      `json:"OriginRetryDelay,omitempty"`
	OriginRetryResponseTimeout            *bool       `json:"OriginRetryResponseTimeout,omitempty"`
	OriginShieldEnableConcurrencyLimit    *bool       `json:"OriginShieldEnableConcurrencyLimit,omitempty"`
	OriginShieldMaxConcurrentRequests     *int32      `json:"OriginShieldMaxConcurrentRequests,omitempty"`
	OriginShieldMaxQueuedRequests         *int32      `json:"OriginShieldMaxQueuedRequests,omitempty"`
	OriginShieldQueueMaxWaitTime          *int32      `json:"OriginShieldQueueMaxWaitTime,omitempty"`
	OriginShieldZoneCode                  *string     `json:"OriginShieldZoneCode,omitempty"`
	OriginType                            *int32      `json:"OriginType,omitempty"`
	OriginURL                             *string     `json:"OriginUrl,omitempty"`
	PermaCacheStorageZoneID               *int64      `json:"PermaCacheStorageZoneId,omitempty"`
	PriceOverride                         *float64    `json:"PriceOverride,omitempty"`
	QueryStringVaryParameters             []string    `json:"QueryStringVaryParameters,omitempty"`
	RequestLimit                          *int32      `json:"RequestLimit,omitempty"`
	ShieldDDosProtectionEnabled           *bool       `json:"ShieldDDosProtectionEnabled,omitempty"`
	ShieldDDosProtectionType              *int        `json:"ShieldDDosProtectionType,omitempty"`
	StorageZoneID                         *int64      `json:"StorageZoneId,omitempty"`
	Type                                  *int        `json:"Type,omitempty"`
	UseBackgroundUpdate                   *bool       `json:"UseBackgroundUpdate,omitempty"`
	UseStaleWhileOffline                  *bool       `json:"UseStaleWhileOffline,omitempty"`
	UseStaleWhileUpdating                 *bool       `json:"UseStaleWhileUpdating,omitempty"`
	VerifyOriginSSL                       *bool       `json:"VerifyOriginSSL,omitempty"`
	VideoLibraryID                        *int64      `json:"VideoLibraryId,omitempty"`
	ZoneSecurityEnabled                   *bool       `json:"ZoneSecurityEnabled,omitempty"`
	ZoneSecurityIncludeHashRemoteIP       *bool       `json:"ZoneSecurityIncludeHashRemoteIP,omitempty"`
	ZoneSecurityKey                       *string     `json:"ZoneSecurityKey,omitempty"`
}

PullZone represents the response of the List and Get Pull Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_index2 https://docs.bunny.net/reference/pullzonepublic_index

type PullZoneAddCustomCertificateOptions

type PullZoneAddCustomCertificateOptions struct {
	Hostname       string `json:"Hostname"`
	Certificate    []byte `json:"Certificate"`
	CertificateKey []byte `json:"CertificateKey"`
}

PullZoneAddCustomCertificateOptions are the request parameters for the Add Custom Certificate API Endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_addcertificate

type PullZoneAddOptions

type PullZoneAddOptions struct {
	// The name of the pull zone.
	Name string `json:"Name,omitempty"`
	// The origin URL of the pull zone where the files are fetched from.
	OriginURL string `json:"OriginUrl,omitempty"`

	// The ID of the storage zone that the pull zone is linked to. (Optional)
	StorageZoneID *int64 `json:"StorageZoneId,omitempty"`
	// The type of the pull zone. Standard = 0, Volume = 1. (Optional)
	Type int `json:"Type,omitempty"`
}

PullZoneAddOptions are the request parameters for the Get Pull Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_add

type PullZoneService

type PullZoneService struct {
	// contains filtered or unexported fields
}

PullZoneService communicates with the /pullzone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pull-zone

func (*PullZoneService) Add

Add creates a new Pull Zone. opts and the non-optional parameters in the struct must be specified for a successful request. On success the created PullZone is returned.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_add

func (*PullZoneService) AddCustomCertificate

func (s *PullZoneService) AddCustomCertificate(ctx context.Context, pullZoneID int64, opts *PullZoneAddCustomCertificateOptions) error

AddCustomCertificate represents the Add Custom Certificate API Endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_addcertificate

func (*PullZoneService) AddCustomHostname

func (s *PullZoneService) AddCustomHostname(ctx context.Context, pullZoneID int64, opts *AddCustomHostnameOptions) error

AddCustomHostname adds a custom hostname to the Pull Zone.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_addhostname

func (*PullZoneService) AddOrUpdateEdgeRule

func (s *PullZoneService) AddOrUpdateEdgeRule(ctx context.Context, pullZoneID int64, opts *AddOrUpdateEdgeRuleOptions) error

AddOrUpdateEdgeRule adds or updates an Edge Rule of a Pull Zone.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_addedgerule

func (*PullZoneService) Delete

func (s *PullZoneService) Delete(ctx context.Context, id int64) error

Delete removes the Pull Zone with the given id.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_delete

func (*PullZoneService) DeleteEdgeRule

func (s *PullZoneService) DeleteEdgeRule(ctx context.Context, pullZoneID int64, edgeRuleGUID string) error

DeleteEdgeRule removes an Edge Rule of a Pull Zone. The edgeRuleGUID field is called edgeRuleID in the API message and documentation. It is the same then the GUID field in the EdgeRule message.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_deleteedgerule

func (*PullZoneService) Get

func (s *PullZoneService) Get(ctx context.Context, id int64) (*PullZone, error)

Get retrieves the Pull Zone with the given id.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_index2

func (*PullZoneService) List

List retrieves the Pull Zones. If opts is nil, DefaultPaginationPerPage and DefaultPaginationPage will be used. if opts.Page or opts.PerPage is < 1, the related DefaultPagination values are used.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_index

func (*PullZoneService) LoadFreeCertificate

func (s *PullZoneService) LoadFreeCertificate(ctx context.Context, hostname string) error

LoadFreeCertificate represents the Load Free Certificate API Endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_loadfreecertificate

func (*PullZoneService) RemoveCertificate

func (s *PullZoneService) RemoveCertificate(ctx context.Context, pullZoneID int64, opts *RemoveCertificateOptions) error

RemoveCertificate represents the Remove Certificate API Endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_removecertificate

func (*PullZoneService) RemoveCustomHostname

func (s *PullZoneService) RemoveCustomHostname(ctx context.Context, pullZoneID int64, opts *RemoveCustomHostnameOptions) error

RemoveCustomHostname removes a custom hostname from the Pull Zone.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_removehostname

func (*PullZoneService) SetEdgeRuleEnabled

func (s *PullZoneService) SetEdgeRuleEnabled(ctx context.Context, pullZoneID int64, edgeRuleGUID string, opts *SetEdgeRuleEnabledOptions) error

SetEdgeRuleEnabled enables or disables an Edge Rule of a Pull Zone. The edgeRuleGUID field is called edgeRuleID in the API message and documentation. It is the same then the GUID field in the EdgeRule message.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_addedgerule

func (*PullZoneService) SetForceSSL

func (s *PullZoneService) SetForceSSL(ctx context.Context, pullzoneID int64, opts *SetForceSSLOptions) error

SetForceSSL enables or disables the force SSL option for a hostname of a Pull Zone.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_setforcessl

func (*PullZoneService) Update

Update changes the configuration the Pull-Zone with the given ID. The updated Pull Zone is returned. Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_updatepullzone

type PullZoneUpdateOptions

type PullZoneUpdateOptions struct {
	AWSSigningEnabled                     *bool    `json:"AWSSigningEnabled,omitempty"`
	AWSSigningKey                         *string  `json:"AWSSigningKey,omitempty"`
	AWSSigningRegionName                  *string  `json:"AWSSigningRegionName,omitempty"`
	AWSSigningSecret                      *string  `json:"AWSSigningSecret,omitempty"`
	AccessControlOriginHeaderExtensions   []string `json:"AccessControlOriginHeaderExtensions,omitempty"`
	AddCanonicalHeader                    *bool    `json:"AddCanonicalHeader,omitempty"`
	AddHostHeader                         *bool    `json:"AddHostHeader,omitempty"`
	AllowedReferrers                      []string `json:"AllowedReferrers,omitempty"`
	BlockPostRequests                     *bool    `json:"BlockPostRequests,omitempty"`
	BlockRootPathAccess                   *bool    `json:"BlockRootPathAccess,omitempty"`
	BlockedCountries                      []string `json:"BlockedCountries,omitempty"`
	BlockedIPs                            []string `json:"BlockedIps,omitempty"`
	BudgetRedirectedCountries             []string `json:"BudgetRedirectedCountries,omitempty"`
	CacheControlBrowserMaxAgeOverride     *int64   `json:"CacheControlBrowserMaxAgeOverride,omitempty"`
	CacheControlMaxAgeOverride            *int64   `json:"CacheControlMaxAgeOverride,omitempty"`
	CacheErrorResponses                   *bool    `json:"CacheErrorResponses,omitempty"`
	ConnectionLimitPerIPCount             *int32   `json:"ConnectionLimitPerIPCount,omitempty"`
	CookieVaryParameters                  []string `json:"CookieVaryParameters,omitempty"`
	DisableCookies                        *bool    `json:"DisableCookies,omitempty"`
	EnableAccessControlOriginHeader       *bool    `json:"EnableAccessControlOriginHeader,omitempty"`
	EnableAvifVary                        *bool    `json:"EnableAvifVary,omitempty"`
	EnableCacheSlice                      *bool    `json:"EnableCacheSlice,omitempty"`
	EnableCookieVary                      *bool    `json:"EnableCookieVary,omitempty"`
	EnableCountryCodeVary                 *bool    `json:"EnableCountryCodeVary,omitempty"`
	EnableGeoZoneAF                       *bool    `json:"EnableGeoZoneAF,omitempty"`
	EnableGeoZoneAsia                     *bool    `json:"EnableGeoZoneASIA,omitempty"`
	EnableGeoZoneEU                       *bool    `json:"EnableGeoZoneEU,omitempty"`
	EnableGeoZoneSA                       *bool    `json:"EnableGeoZoneSA,omitempty"`
	EnableGeoZoneUS                       *bool    `json:"EnableGeoZoneUS,omitempty"`
	EnableHostnameVary                    *bool    `json:"EnableHostnameVary,omitempty"`
	EnableLogging                         *bool    `json:"EnableLogging,omitempty"`
	EnableMobileVary                      *bool    `json:"EnableMobileVary,omitempty"`
	EnableOriginShield                    *bool    `json:"EnableOriginShield,omitempty"`
	EnableQueryStringOrdering             *bool    `json:"EnableQueryStringOrdering,omitempty"`
	EnableSafeHop                         *bool    `json:"EnableSafeHop,omitempty"`
	EnableTLS1                            *bool    `json:"EnableTLS1,omitempty"`
	EnableTLS11                           *bool    `json:"EnableTLS1_1,omitempty"`
	EnableWebPVary                        *bool    `json:"EnableWebPVary,omitempty"`
	ErrorPageCustomCode                   *string  `json:"ErrorPageCustomCode,omitempty"`
	ErrorPageEnableCustomCode             *bool    `json:"ErrorPageEnableCustomCode,omitempty"`
	ErrorPageEnableStatuspageWidget       *bool    `json:"ErrorPageEnableStatuspageWidget,omitempty"`
	ErrorPageStatuspageCode               *string  `json:"ErrorPageStatuspageCode,omitempty"`
	ErrorPageWhitelabel                   *bool    `json:"ErrorPageWhitelabel,omitempty"`
	FollowRedirects                       *bool    `json:"FollowRedirects,omitempty"`
	IgnoreQueryStrings                    *bool    `json:"IgnoreQueryStrings,omitempty"`
	LogForwardingEnabled                  *bool    `json:"LogForwardingEnabled,omitempty"`
	LogForwardingHostname                 *string  `json:"LogForwardingHostname,omitempty"`
	LogForwardingPort                     *int32   `json:"LogForwardingPort,omitempty"`
	LogForwardingToken                    *string  `json:"LogForwardingToken,omitempty"`
	LoggingIPAnonymizationEnabled         *bool    `json:"LoggingIPAnonymizationEnabled,omitempty"`
	LoggingSaveToStorage                  *bool    `json:"LoggingSaveToStorage,omitempty"`
	LoggingStorageZoneID                  *int64   `json:"LoggingStorageZoneId,omitempty"`
	MonthlyBandwidthLimit                 *int64   `json:"MonthlyBandwidthLimit,omitempty"`
	OptimizerAutomaticOptimizationEnabled *bool    `json:"OptimizerAutomaticOptimizationEnabled,omitempty"`
	OptimizerDesktopMaxWidth              *int32   `json:"OptimizerDesktopMaxWidth,omitempty"`
	OptimizerEnableManipulationEngine     *bool    `json:"OptimizerEnableManipulationEngine,omitempty"`
	OptimizerEnableWebP                   *bool    `json:"OptimizerEnableWebP,omitempty"`
	OptimizerEnabled                      *bool    `json:"OptimizerEnabled,omitempty"`
	OptimizerImageQuality                 *int32   `json:"OptimizerImageQuality,omitempty"`
	OptimizerMinifyCSS                    *bool    `json:"OptimizerMinifyCSS,omitempty"`
	OptimizerMinifyJavaScript             *bool    `json:"OptimizerMinifyJavaScript,omitempty"`
	OptimizerMobileImageQuality           *int32   `json:"OptimizerMobileImageQuality,omitempty"`
	OptimizerMobileMaxWidth               *int32   `json:"OptimizerMobileMaxWidth,omitempty"`
	OptimizerWatermarkEnabled             *bool    `json:"OptimizerWatermarkEnabled,omitempty"`
	OptimizerWatermarkMinImageSize        *int32   `json:"OptimizerWatermarkMinImageSize,omitempty"`
	OptimizerWatermarkOffset              *float64 `json:"OptimizerWatermarkOffset,omitempty"`
	OptimizerWatermarkPosition            *int     `json:"OptimizerWatermarkPosition,omitempty"`
	OptimizerWatermarkURL                 *string  `json:"OptimizerWatermarkUrl,omitempty"`
	OriginConnectTimeout                  *int32   `json:"OriginConnectTimeout,omitempty"`
	OriginResponseTimeout                 *int32   `json:"OriginResponseTimeout,omitempty"`
	OriginRetries                         *int32   `json:"OriginRetries,omitempty"`
	OriginRetry5xxResponses               *bool    `json:"OriginRetry5xxResponses,omitempty"`
	OriginRetryConnectionTimeout          *bool    `json:"OriginRetryConnectionTimeout,omitempty"`
	OriginRetryDelay                      *int32   `json:"OriginRetryDelay,omitempty"`
	OriginRetryResponseTimeout            *bool    `json:"OriginRetryResponseTimeout,omitempty"`
	OriginShieldEnableConcurrencyLimit    *bool    `json:"OriginShieldEnableConcurrencyLimit,omitempty"`
	OriginShieldMaxConcurrentRequests     *int32   `json:"OriginShieldMaxConcurrentRequests,omitempty"`
	OriginShieldMaxQueuedRequests         *int32   `json:"OriginShieldMaxQueuedRequests,omitempty"`
	OriginShieldQueueMaxWaitTime          *int32   `json:"OriginShieldQueueMaxWaitTime,omitempty"`
	OriginShieldZoneCode                  *string  `json:"OriginShieldZoneCode,omitempty"`
	OriginURL                             *string  `json:"OriginUrl,omitempty"`
	PermaCacheStorageZoneID               *int64   `json:"PermaCacheStorageZoneId,omitempty"`
	QueryStringVaryParameters             []string `json:"QueryStringVaryParameters,omitempty"`
	RequestLimit                          *int32   `json:"RequestLimit,omitempty"`
	Type                                  *int     `json:"Type,omitempty"`
	UseStaleWhileOffline                  *bool    `json:"UseStaleWhileOffline,omitempty"`
	UseStaleWhileUpdating                 *bool    `json:"UseStaleWhileUpdating,omitempty"`
	VerifyOriginSSL                       *bool    `json:"VerifyOriginSSL,omitempty"`
	WAFEnabled                            *bool    `json:"WAFEnabled,omitempty"`
	WAFEnabledRules                       []int32  `json:"WAFEnabledRules,omitempty"`
	ZoneSecurityEnabled                   *bool    `json:"ZoneSecurityEnabled,omitempty"`
	ZoneSecurityIncludeHashRemoteIP       *bool    `json:"ZoneSecurityIncludeHashRemoteIP,omitempty"`
}

PullZoneUpdateOptions represents the request parameters for the Update Pull Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_updatepullzone

type PullZones

type PullZones PaginationReply[PullZone]

PullZones represents the response of the List Pull Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_index

type RemoveCertificateOptions

type RemoveCertificateOptions struct {
	Hostname *string `json:"Hostname,omitempty"`
}

RemoveCertificateOptions represents the request parameters for the Remove Certificate API Endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_removecertificate

type RemoveCustomHostnameOptions

type RemoveCustomHostnameOptions struct {
	// Hostname is the hostname that is removed. (Required)
	Hostname *string `json:"Hostname,omitempty"`
}

RemoveCustomHostnameOptions represents the message that is sent to the Remove Custom Hostname API Endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_removehostname

type SetEdgeRuleEnabledOptions

type SetEdgeRuleEnabledOptions struct {
	// ID must be set to the PullZone ID for that the EdgeRule should be enabled.
	ID    *int64 `json:"Id,omitempty"`
	Value *bool  `json:"Value,omitempty"`
}

SetEdgeRuleEnabledOptions represents the message that is sent to Add/Update Edge Rule endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_addedgerule

type SetForceSSLOptions

type SetForceSSLOptions struct {
	Hostname *string `json:"Hostname,omitempty"`
	ForceSSL *bool   `json:"ForceSSL,omitempty"`
}

SetForceSSLOptions represents the message is to the Set Force SSL Endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_setforcessl

type StorageZone

type StorageZone struct {
	ID *int64 `json:"Id,omitempty"`

	UserID             *string     `json:"UserId,omitempty"`
	Name               *string     `json:"Name,omitempty"`
	Password           *string     `json:"Password,omitempty"`
	DateModified       *string     `json:"DateModified,omitempty"`
	Deleted            *bool       `json:"Deleted,omitempty"`
	StorageUsed        *int64      `json:"StorageUsed,omitempty"`
	FilesStored        *int64      `json:"FilesStored,omitempty"`
	Region             *string     `json:"Region,omitempty"`
	ReplicationRegions []string    `json:"ReplicationRegions,omitempty"`
	PullZones          []*PullZone `json:"PullZones,omitempty"`
	ReadOnlyPassword   *string     `json:"ReadOnlyPassword,omitempty"`
}

StorageZone represents the response of the List and Get Storage Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/storagezonepublic_index2 https://docs.bunny.net/reference/storagezonepublic_index

type StorageZoneAddOptions

type StorageZoneAddOptions struct {
	// The name of the storage zone
	Name *string `json:"Name,omitempty"`
	// The ID of the storage zone that the storage zone is linked to.
	Region *string `json:"Region,omitempty"`

	// The origin URL of the storage zone where the files are fetched from (Optional)
	OriginURL *string `json:"OriginUrl,omitempty"`
	// The code of the main storage zone region (Optional)
	ReplicationRegions []string `json:"ReplicationRegions,omitempty"`
}

StorageZoneAddOptions are the request parameters for the Get Storage Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/storagezonepublic_add

type StorageZoneService

type StorageZoneService struct {
	// contains filtered or unexported fields
}

StorageZoneService communicates with the /storagezone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/storagezonepublic_index

func (*StorageZoneService) Add

Add creates a new Storage Zone. opts and the non-optional parameters in the struct must be specified for a successful request. On success the created StorageZone is returned.

Bunny.net API docs: https://docs.bunny.net/reference/storagezonepublic_add

func (*StorageZoneService) Delete

func (s *StorageZoneService) Delete(ctx context.Context, id int64) error

Delete removes the Storage Zone with the given id.

Bunny.net API docs: https://docs.bunny.net/reference/storagezonepublic_delete

func (*StorageZoneService) Get

Get retrieves the Storage Zone with the given id.

Bunny.net API docs: https://docs.bunny.net/reference/storagezonepublic_index2

func (*StorageZoneService) List

List retrieves the Storage Zones. If opts is nil, DefaultPaginationPerPage and DefaultPaginationPage will be used. if opts.Page or opts.PerPage is < 1, the related DefaultPagination values are used.

Bunny.net API docs: https://docs.bunny.net/reference/storagezonepublic_index

func (*StorageZoneService) Update

Update changes the configuration the Storage-Zone with the given ID. Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_updatepullzone

type StorageZoneUpdateOptions

type StorageZoneUpdateOptions struct {
	// NOTE: the naming in the Bunny API for this property is inconsistent.
	// In the update call its `ReplicationZones` but everywhere else its
	// referred to as `ReplicationRegions`.
	ReplicationRegions []string `json:"ReplicationZones,omitempty"`
	OriginURL          *string  `json:"OriginUrl,omitempty"`
	Custom404FilePath  *string  `json:"Custom404FilePath,omitempty"`
	Rewrite404To200    *bool    `json:"Rewrite404To200,omitempty"`
}

StorageZoneUpdateOptions represents the request parameters for the Update Storage Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_updatepullzone

type StorageZones

type StorageZones PaginationReply[StorageZone]

StorageZones represents the response of the List Storage Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/storagezonepublic_index

type VideoLibraries

type VideoLibraries PaginationReply[VideoLibrary]

VideoLibraries represents the response of the List Video Library API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/videolibrarypublic_index

type VideoLibrary

type VideoLibrary struct {
	ID *int64 `json:"Id,omitempty"`

	Name               *string  `json:"Name,omitempty"`
	VideoCount         *int64   `json:"VideoCount,omitempty"`
	TrafficUsage       *int64   `json:"TrafficUsage,omitempty"`
	StorageUsage       *int64   `json:"StorageUsage,omitempty"`
	DateCreated        *string  `json:"DateCreated,omitempty"`
	ReplicationRegions []string `json:"ReplicationRegions,omitempty"`
	APIKey             *string  `json:"ApiKey,omitempty"`
	ReadOnlyAPIKey     *string  `json:"ReadOnlyApiKey,omitempty"`
	HasWatermark       *bool    `json:"HasWatermark,omitempty"`

	WatermarkPositionLeft *int32  `json:"WatermarkPositionLeft,omitempty"`
	WatermarkPositionTop  *int32  `json:"WatermarkPositionTop,omitempty"`
	WatermarkWidth        *int32  `json:"WatermarkWidth,omitempty"`
	PullZoneID            *int64  `json:"PullZoneId,omitempty"`
	StorageZoneID         *int64  `json:"StorageZoneId,omitempty"`
	WatermarkHeight       *int32  `json:"WatermarkHeight,omitempty"`
	EnabledResolutions    *string `json:"EnabledResolutions,omitempty"`

	ViAiPublisherID                  *string  `json:"ViAiPublisherId,omitempty"`
	VastTagURL                       *string  `json:"VastTagUrl,omitempty"`
	WebhookURL                       *string  `json:"WebhookUrl,omitempty"`
	CaptionsFontSize                 *int32   `json:"CaptionsFontSize,omitempty"`
	CaptionsFontColor                *string  `json:"CaptionsFontColor,omitempty"`
	CaptionsBackground               *string  `json:"CaptionsBackground,omitempty"`
	UILanguage                       *string  `json:"UILanguage,omitempty"`
	AllowEarlyPlay                   *bool    `json:"AllowEarlyPlay,omitempty"`
	PlayerTokenAuthenticationEnabled *bool    `json:"PlayerTokenAuthenticationEnabled,omitempty"`
	AllowedReferrers                 []string `json:"AllowedReferrers,omitempty"`
	BlockedReferrers                 []string `json:"BlockedReferrers,omitempty"`
	BlockNoneReferrer                *bool    `json:"BlockNoneReferrer,omitempty"`
	EnableMP4Fallback                *bool    `json:"EnableMP4Fallback,omitempty"`
	KeepOriginalFiles                *bool    `json:"KeepOriginalFiles,omitempty"`
	AllowDirectPlay                  *bool    `json:"AllowDirectPlay,omitempty"`
	EnableDRM                        *bool    `json:"EnableDRM,omitempty"`
	Bitrate240p                      *int32   `json:"Bitrate240p,omitempty"`
	Bitrate360p                      *int32   `json:"Bitrate360p,omitempty"`
	Bitrate480p                      *int32   `json:"Bitrate480p,omitempty"`
	Bitrate720p                      *int32   `json:"Bitrate720p,omitempty"`
	Bitrate1080p                     *int32   `json:"Bitrate1080p,omitempty"`
	Bitrate1440p                     *int32   `json:"Bitrate1440p,omitempty"`
	Bitrate2160p                     *int32   `json:"Bitrate2160p,omitempty"`
	APIAccessKey                     *string  `json:"ApiAccessKey,omitempty"`
	ShowHeatmap                      *bool    `json:"ShowHeatmap,omitempty"`
	EnableContentTagging             *bool    `json:"EnableContentTagging,omitempty"`
	PullZoneType                     *int32   `json:"PullZoneType,omitempty"`
	CustomHTML                       *string  `json:"CustomHTML,omitempty"`
	Controls                         *string  `json:"Controls,omitempty"`
	PlayerKeyColor                   *string  `json:"PlayerKeyColor,omitempty"`
	FontFamily                       *string  `json:"FontFamily,omitempty"`
}

VideoLibrary represents the response of the List and Get Video Library API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/videolibrarypublic_index2 https://docs.bunny.net/reference/videolibrarypublic_index

type VideoLibraryAddOptions

type VideoLibraryAddOptions struct {
	// The name of the Video Library.
	Name *string `json:"Name,omitempty"`

	// The geo-replication regions of the underlying storage zone (Optional)
	ReplicationRegions []string `json:"ReplicationRegions,omitempty"`
}

VideoLibraryAddOptions are the request parameters for the Get Video Library API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/videolibrarypublic_add

type VideoLibraryGetOpts

type VideoLibraryGetOpts struct {
	IncludeAccessKey bool `url:"includeAccessKey"`
}

VideoLibraryGetOpts represents optional query parameters available when Getting or Listing Video Libraries.

type VideoLibraryListOpts

type VideoLibraryListOpts struct {
	VideoLibraryGetOpts
	PaginationOptions
}

VideoLibraryListOpts represents both PaginationOptions and the other optional query parameters of the List endpoint.

type VideoLibraryService

type VideoLibraryService struct {
	// contains filtered or unexported fields
}

VideoLibraryService communicates with the /videolibrary API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/videolibrarypublic_index

func (*VideoLibraryService) Add

Add creates a new Video Library. opts and the non-optional parameters in the struct must be specified for a successful request. On success the created VideoLibrary is returned.

Bunny.net API docs: https://docs.bunny.net/reference/videolibrarypublic_add

func (*VideoLibraryService) Delete

func (s *VideoLibraryService) Delete(ctx context.Context, id int64) error

Delete removes the Video Library with the given id.

Bunny.net API docs: https://docs.bunny.net/reference/videolibrarypublic_delete

func (*VideoLibraryService) Get

Get retrieves the Video Library with the given id.

Bunny.net API docs: https://docs.bunny.net/reference/videolibrarypublic_index2

func (*VideoLibraryService) List

List retrieves the Video Libraries. If opts is nil, DefaultPaginationPerPage and DefaultPaginationPage will be used. if opts.Page or opts.PerPage is < 1, the related DefaultPagination values are used.

Bunny.net API docs: https://docs.bunny.net/reference/videolibrarypublic_index

func (*VideoLibraryService) Update

Update changes the configuration the Video Library with the given ID. Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_updatepullzone

type VideoLibraryUpdateOptions

type VideoLibraryUpdateOptions struct {
	Name                             *string `json:"Name,omitempty"`
	CustomHTML                       *string `json:"CustomHTML,omitempty"`
	PlayerKeyColor                   *string `json:"PlayerKeyColor,omitempty"`
	EnableTokenAuthentication        *bool   `json:"EnableTokenAuthentication,omitempty"`
	EnableTokenIPVerification        *bool   `json:"EnableTokenIPVerification,omitempty"`
	ResetToken                       *bool   `json:"ResetToken,omitempty"`
	WatermarkPositionLeft            *int32  `json:"WatermarkPositionLeft,omitempty"`
	WatermarkPositionTop             *int32  `json:"WatermarkPositionTop,omitempty"`
	WatermarkWidth                   *int32  `json:"WatermarkWidth,omitempty"`
	WatermarkHeight                  *int32  `json:"WatermarkHeight,omitempty"`
	EnabledResolutions               *string `json:"EnabledResolutions,omitempty"`
	ViAiPublisherID                  *string `json:"ViAiPublisherId,omitempty"`
	VastTagURL                       *string `json:"VastTagUrl,omitempty"`
	WebhookURL                       *string `json:"WebhookUrl,omitempty"`
	CaptionsFontSize                 *int32  `json:"CaptionsFontSize,omitempty"`
	CaptionsFontColor                *string `json:"CaptionsFontColor,omitempty"`
	CaptionsBackground               *string `json:"CaptionsBackground,omitempty"`
	UILanguage                       *string `json:"UILanguage,omitempty"`
	AllowEarlyPlay                   *bool   `json:"AllowEarlyPlay,omitempty"`
	PlayerTokenAuthenticationEnabled *bool   `json:"PlayerTokenAuthenticationEnabled,omitempty"`
	BlockNoneReferrer                *bool   `json:"BlockNoneReferrer,omitempty"`
	EnableMP4Fallback                *bool   `json:"EnableMP4Fallback,omitempty"`
	KeepOriginalFiles                *bool   `json:"KeepOriginalFiles,omitempty"`
	AllowDirectPlay                  *bool   `json:"AllowDirectPlay,omitempty"`
	EnableDRM                        *bool   `json:"EnableDRM,omitempty"`
	Controls                         *string `json:"Controls,omitempty"`
	Bitrate240p                      *int32  `json:"Bitrate240p,omitempty"`
	Bitrate360p                      *int32  `json:"Bitrate360p,omitempty"`
	Bitrate480p                      *int32  `json:"Bitrate480p,omitempty"`
	Bitrate720p                      *int32  `json:"Bitrate720p,omitempty"`
	Bitrate1080p                     *int32  `json:"Bitrate1080p,omitempty"`
	Bitrate1440p                     *int32  `json:"Bitrate1440p,omitempty"`
	Bitrate2160p                     *int32  `json:"Bitrate2160p,omitempty"`
	ShowHeatmap                      *bool   `json:"ShowHeatmap,omitempty"`
	EnableContentTagging             *bool   `json:"EnableContentTagging,omitempty"`
	FontFamily                       *string `json:"FontFamily,omitempty"`
}

VideoLibraryUpdateOptions represents the request parameters for the Update Storage Zone API endpoint.

Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_updatepullzone

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL