pullzone_update.go raw

   1  package bunny
   2  
   3  import (
   4  	"context"
   5  	"fmt"
   6  )
   7  
   8  // PullZoneUpdateOptions represents the request parameters for the Update Pull
   9  // Zone API endpoint.
  10  //
  11  // Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_updatepullzone
  12  type PullZoneUpdateOptions struct {
  13  	AWSSigningEnabled                     *bool    `json:"AWSSigningEnabled,omitempty"`
  14  	AWSSigningKey                         *string  `json:"AWSSigningKey,omitempty"`
  15  	AWSSigningRegionName                  *string  `json:"AWSSigningRegionName,omitempty"`
  16  	AWSSigningSecret                      *string  `json:"AWSSigningSecret,omitempty"`
  17  	AccessControlOriginHeaderExtensions   []string `json:"AccessControlOriginHeaderExtensions,omitempty"`
  18  	AddCanonicalHeader                    *bool    `json:"AddCanonicalHeader,omitempty"`
  19  	AddHostHeader                         *bool    `json:"AddHostHeader,omitempty"`
  20  	AllowedReferrers                      []string `json:"AllowedReferrers,omitempty"`
  21  	BlockPostRequests                     *bool    `json:"BlockPostRequests,omitempty"`
  22  	BlockRootPathAccess                   *bool    `json:"BlockRootPathAccess,omitempty"`
  23  	BlockedCountries                      []string `json:"BlockedCountries,omitempty"`
  24  	BlockedIPs                            []string `json:"BlockedIps,omitempty"`
  25  	BudgetRedirectedCountries             []string `json:"BudgetRedirectedCountries,omitempty"`
  26  	CacheControlBrowserMaxAgeOverride     *int64   `json:"CacheControlBrowserMaxAgeOverride,omitempty"`
  27  	CacheControlMaxAgeOverride            *int64   `json:"CacheControlMaxAgeOverride,omitempty"`
  28  	CacheErrorResponses                   *bool    `json:"CacheErrorResponses,omitempty"`
  29  	ConnectionLimitPerIPCount             *int32   `json:"ConnectionLimitPerIPCount,omitempty"`
  30  	CookieVaryParameters                  []string `json:"CookieVaryParameters,omitempty"`
  31  	DisableCookies                        *bool    `json:"DisableCookies,omitempty"`
  32  	EnableAccessControlOriginHeader       *bool    `json:"EnableAccessControlOriginHeader,omitempty"`
  33  	EnableAvifVary                        *bool    `json:"EnableAvifVary,omitempty"`
  34  	EnableCacheSlice                      *bool    `json:"EnableCacheSlice,omitempty"`
  35  	EnableCookieVary                      *bool    `json:"EnableCookieVary,omitempty"`
  36  	EnableCountryCodeVary                 *bool    `json:"EnableCountryCodeVary,omitempty"`
  37  	EnableGeoZoneAF                       *bool    `json:"EnableGeoZoneAF,omitempty"`
  38  	EnableGeoZoneAsia                     *bool    `json:"EnableGeoZoneASIA,omitempty"`
  39  	EnableGeoZoneEU                       *bool    `json:"EnableGeoZoneEU,omitempty"`
  40  	EnableGeoZoneSA                       *bool    `json:"EnableGeoZoneSA,omitempty"`
  41  	EnableGeoZoneUS                       *bool    `json:"EnableGeoZoneUS,omitempty"`
  42  	EnableHostnameVary                    *bool    `json:"EnableHostnameVary,omitempty"`
  43  	EnableLogging                         *bool    `json:"EnableLogging,omitempty"`
  44  	EnableMobileVary                      *bool    `json:"EnableMobileVary,omitempty"`
  45  	EnableOriginShield                    *bool    `json:"EnableOriginShield,omitempty"`
  46  	EnableQueryStringOrdering             *bool    `json:"EnableQueryStringOrdering,omitempty"`
  47  	EnableSafeHop                         *bool    `json:"EnableSafeHop,omitempty"`
  48  	EnableTLS1                            *bool    `json:"EnableTLS1,omitempty"`
  49  	EnableTLS11                           *bool    `json:"EnableTLS1_1,omitempty"`
  50  	EnableWebPVary                        *bool    `json:"EnableWebPVary,omitempty"`
  51  	ErrorPageCustomCode                   *string  `json:"ErrorPageCustomCode,omitempty"`
  52  	ErrorPageEnableCustomCode             *bool    `json:"ErrorPageEnableCustomCode,omitempty"`
  53  	ErrorPageEnableStatuspageWidget       *bool    `json:"ErrorPageEnableStatuspageWidget,omitempty"`
  54  	ErrorPageStatuspageCode               *string  `json:"ErrorPageStatuspageCode,omitempty"`
  55  	ErrorPageWhitelabel                   *bool    `json:"ErrorPageWhitelabel,omitempty"`
  56  	FollowRedirects                       *bool    `json:"FollowRedirects,omitempty"`
  57  	IgnoreQueryStrings                    *bool    `json:"IgnoreQueryStrings,omitempty"`
  58  	LogForwardingEnabled                  *bool    `json:"LogForwardingEnabled,omitempty"`
  59  	LogForwardingHostname                 *string  `json:"LogForwardingHostname,omitempty"`
  60  	LogForwardingPort                     *int32   `json:"LogForwardingPort,omitempty"`
  61  	LogForwardingToken                    *string  `json:"LogForwardingToken,omitempty"`
  62  	LoggingIPAnonymizationEnabled         *bool    `json:"LoggingIPAnonymizationEnabled,omitempty"`
  63  	LoggingSaveToStorage                  *bool    `json:"LoggingSaveToStorage,omitempty"`
  64  	LoggingStorageZoneID                  *int64   `json:"LoggingStorageZoneId,omitempty"`
  65  	MonthlyBandwidthLimit                 *int64   `json:"MonthlyBandwidthLimit,omitempty"`
  66  	OptimizerAutomaticOptimizationEnabled *bool    `json:"OptimizerAutomaticOptimizationEnabled,omitempty"`
  67  	OptimizerDesktopMaxWidth              *int32   `json:"OptimizerDesktopMaxWidth,omitempty"`
  68  	OptimizerEnableManipulationEngine     *bool    `json:"OptimizerEnableManipulationEngine,omitempty"`
  69  	OptimizerEnableWebP                   *bool    `json:"OptimizerEnableWebP,omitempty"`
  70  	OptimizerEnabled                      *bool    `json:"OptimizerEnabled,omitempty"`
  71  	OptimizerImageQuality                 *int32   `json:"OptimizerImageQuality,omitempty"`
  72  	OptimizerMinifyCSS                    *bool    `json:"OptimizerMinifyCSS,omitempty"`
  73  	OptimizerMinifyJavaScript             *bool    `json:"OptimizerMinifyJavaScript,omitempty"`
  74  	OptimizerMobileImageQuality           *int32   `json:"OptimizerMobileImageQuality,omitempty"`
  75  	OptimizerMobileMaxWidth               *int32   `json:"OptimizerMobileMaxWidth,omitempty"`
  76  	OptimizerWatermarkEnabled             *bool    `json:"OptimizerWatermarkEnabled,omitempty"`
  77  	OptimizerWatermarkMinImageSize        *int32   `json:"OptimizerWatermarkMinImageSize,omitempty"`
  78  	OptimizerWatermarkOffset              *float64 `json:"OptimizerWatermarkOffset,omitempty"`
  79  	OptimizerWatermarkPosition            *int     `json:"OptimizerWatermarkPosition,omitempty"`
  80  	OptimizerWatermarkURL                 *string  `json:"OptimizerWatermarkUrl,omitempty"`
  81  	OriginConnectTimeout                  *int32   `json:"OriginConnectTimeout,omitempty"`
  82  	OriginResponseTimeout                 *int32   `json:"OriginResponseTimeout,omitempty"`
  83  	OriginRetries                         *int32   `json:"OriginRetries,omitempty"`
  84  	OriginRetry5xxResponses               *bool    `json:"OriginRetry5xxResponses,omitempty"`
  85  	OriginRetryConnectionTimeout          *bool    `json:"OriginRetryConnectionTimeout,omitempty"`
  86  	OriginRetryDelay                      *int32   `json:"OriginRetryDelay,omitempty"`
  87  	OriginRetryResponseTimeout            *bool    `json:"OriginRetryResponseTimeout,omitempty"`
  88  	OriginShieldEnableConcurrencyLimit    *bool    `json:"OriginShieldEnableConcurrencyLimit,omitempty"`
  89  	OriginShieldMaxConcurrentRequests     *int32   `json:"OriginShieldMaxConcurrentRequests,omitempty"`
  90  	OriginShieldMaxQueuedRequests         *int32   `json:"OriginShieldMaxQueuedRequests,omitempty"`
  91  	OriginShieldQueueMaxWaitTime          *int32   `json:"OriginShieldQueueMaxWaitTime,omitempty"`
  92  	OriginShieldZoneCode                  *string  `json:"OriginShieldZoneCode,omitempty"`
  93  	OriginURL                             *string  `json:"OriginUrl,omitempty"`
  94  	PermaCacheStorageZoneID               *int64   `json:"PermaCacheStorageZoneId,omitempty"`
  95  	QueryStringVaryParameters             []string `json:"QueryStringVaryParameters,omitempty"`
  96  	RequestLimit                          *int32   `json:"RequestLimit,omitempty"`
  97  	Type                                  *int     `json:"Type,omitempty"`
  98  	UseStaleWhileOffline                  *bool    `json:"UseStaleWhileOffline,omitempty"`
  99  	UseStaleWhileUpdating                 *bool    `json:"UseStaleWhileUpdating,omitempty"`
 100  	VerifyOriginSSL                       *bool    `json:"VerifyOriginSSL,omitempty"`
 101  	WAFEnabled                            *bool    `json:"WAFEnabled,omitempty"`
 102  	WAFEnabledRules                       []int32  `json:"WAFEnabledRules,omitempty"`
 103  	ZoneSecurityEnabled                   *bool    `json:"ZoneSecurityEnabled,omitempty"`
 104  	ZoneSecurityIncludeHashRemoteIP       *bool    `json:"ZoneSecurityIncludeHashRemoteIP,omitempty"`
 105  }
 106  
 107  // Update changes the configuration the Pull-Zone with the given ID.
 108  // The updated Pull Zone is returned.
 109  // Bunny.net API docs: https://docs.bunny.net/reference/pullzonepublic_updatepullzone
 110  func (s *PullZoneService) Update(ctx context.Context, id int64, opts *PullZoneUpdateOptions) (*PullZone, error) {
 111  	path := fmt.Sprintf("pullzone/%d", id)
 112  	return resourcePostWithResponse[PullZone](ctx, s.client, path, opts)
 113  }
 114