bunny

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2024 License: MIT Imports: 12 Imported by: 0

README

bunny-go

This project is discontinued.

Documentation

Overview

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

Example
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	bunny "github.com/ezitisitis/bunny-go"
)

func main() {
	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 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

func (s *DNSZoneService) List(
	ctx context.Context,
	opts *PaginationOptions,
) (*DNSZones, error)

List retrieves the DNS Zones. If opts is nil, DefaultPaginationPerPage and DefaultPaginationPage will be used. if opts.Page or 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 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

func (s *PullZoneService) List(
	ctx context.Context,
	opts *PaginationOptions,
) (*PullZones, error)

List retrieves the Pull Zones. If opts is nil, DefaultPaginationPerPage and DefaultPaginationPage will be used. if opts.Page or 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 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 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 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 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 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