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