diff --git a/nodebalancer_firewalls.go b/nodebalancer_firewalls.go index d2b339c7d..2e0337848 100644 --- a/nodebalancer_firewalls.go +++ b/nodebalancer_firewalls.go @@ -2,40 +2,14 @@ package linodego import ( "context" - "fmt" - - "github.com/go-resty/resty/v2" ) -// NodeBalancerFirewallsPagedResponse represents a Linode API response for listing of Cloud Firewalls -type NodeBalancerFirewallsPagedResponse struct { - *PageOptions - Data []Firewall `json:"data"` -} - -func (NodeBalancerFirewallsPagedResponse) endpoint(ids ...any) string { - id := ids[0].(int) - return fmt.Sprintf("nodebalancers/%d/firewalls", id) -} - -func (resp *NodeBalancerFirewallsPagedResponse) castResult(r *resty.Request, e string) (int, int, error) { - res, err := coupleAPIErrors(r.SetResult(NodeBalancerFirewallsPagedResponse{}).Get(e)) - if err != nil { - return 0, 0, err - } - castedRes := res.Result().(*NodeBalancerFirewallsPagedResponse) - resp.Data = append(resp.Data, castedRes.Data...) - return castedRes.Pages, castedRes.Results, nil -} - // ListNodeBalancerFirewalls returns a paginated list of Cloud Firewalls for nodebalancerID func (c *Client) ListNodeBalancerFirewalls(ctx context.Context, nodebalancerID int, opts *ListOptions) ([]Firewall, error) { - response := NodeBalancerFirewallsPagedResponse{} - - err := c.listHelper(ctx, &response, opts, nodebalancerID) + response, err := getPaginatedResults[Firewall](ctx, c, formatAPIPath("nodebalancers/%d/firewalls", nodebalancerID), opts) if err != nil { return nil, err } - return response.Data, nil + return response, nil } diff --git a/nodebalancer_stats.go b/nodebalancer_stats.go index 39a055cb5..e1ae39b30 100644 --- a/nodebalancer_stats.go +++ b/nodebalancer_stats.go @@ -2,7 +2,6 @@ package linodego import ( "context" - "fmt" ) // NodeBalancerStats represents a nodebalancer stats object @@ -25,12 +24,11 @@ type StatsTraffic struct { // GetNodeBalancerStats gets the template with the provided ID func (c *Client) GetNodeBalancerStats(ctx context.Context, nodebalancerID int) (*NodeBalancerStats, error) { - e := fmt.Sprintf("nodebalancers/%d/stats", nodebalancerID) - req := c.R(ctx).SetResult(&NodeBalancerStats{}) - r, err := coupleAPIErrors(req.Get(e)) + e := formatAPIPath("nodebalancers/%d/stats", nodebalancerID) + response, err := doGETRequest[NodeBalancerStats](ctx, c, e) if err != nil { return nil, err } - return r.Result().(*NodeBalancerStats), nil + return response, nil } diff --git a/object_storage.go b/object_storage.go index 743bfa62d..7e9c51796 100644 --- a/object_storage.go +++ b/object_storage.go @@ -12,18 +12,17 @@ type ObjectStorageTransfer struct { // CancelObjectStorage cancels and removes all object storage from the Account func (c *Client) CancelObjectStorage(ctx context.Context) error { e := "object-storage/cancel" - _, err := coupleAPIErrors(c.R(ctx).Post(e)) + _, err := doPOSTRequest[any, any](ctx, c, e) return err } // GetObjectStorageTransfer returns the amount of outbound data transferred used by the Account func (c *Client) GetObjectStorageTransfer(ctx context.Context) (*ObjectStorageTransfer, error) { e := "object-storage/transfer" - req := c.R(ctx).SetResult(&ObjectStorageTransfer{}) - r, err := coupleAPIErrors(req.Get(e)) + response, err := doGETRequest[ObjectStorageTransfer](ctx, c, e) if err != nil { return nil, err } - return r.Result().(*ObjectStorageTransfer), nil + return response, nil } diff --git a/object_storage_bucket_certs.go b/object_storage_bucket_certs.go index 36a1d44b5..e09d2337c 100644 --- a/object_storage_bucket_certs.go +++ b/object_storage_bucket_certs.go @@ -2,9 +2,6 @@ package linodego import ( "context" - "encoding/json" - "fmt" - "net/url" ) type ObjectStorageBucketCert struct { @@ -18,40 +15,29 @@ type ObjectStorageBucketCertUploadOptions struct { // UploadObjectStorageBucketCert uploads a TLS/SSL Cert to be used with an Object Storage Bucket. func (c *Client) UploadObjectStorageBucketCert(ctx context.Context, clusterOrRegionID, bucket string, opts ObjectStorageBucketCertUploadOptions) (*ObjectStorageBucketCert, error) { - body, err := json.Marshal(opts) + e := formatAPIPath("object-storage/buckets/%s/%s/ssl", clusterOrRegionID, bucket) + response, err := doPOSTRequest[ObjectStorageBucketCert](ctx, c, e, opts) if err != nil { return nil, err } - clusterOrRegionID = url.PathEscape(clusterOrRegionID) - bucket = url.PathEscape(bucket) - e := fmt.Sprintf("object-storage/buckets/%s/%s/ssl", clusterOrRegionID, bucket) - req := c.R(ctx).SetResult(&ObjectStorageBucketCert{}).SetBody(string(body)) - r, err := coupleAPIErrors(req.Post(e)) - if err != nil { - return nil, err - } - return r.Result().(*ObjectStorageBucketCert), nil + return response, nil } // GetObjectStorageBucketCert gets an ObjectStorageBucketCert func (c *Client) GetObjectStorageBucketCert(ctx context.Context, clusterOrRegionID, bucket string) (*ObjectStorageBucketCert, error) { - clusterOrRegionID = url.PathEscape(clusterOrRegionID) - bucket = url.PathEscape(bucket) - e := fmt.Sprintf("object-storage/buckets/%s/%s/ssl", clusterOrRegionID, bucket) - req := c.R(ctx).SetResult(&ObjectStorageBucketCert{}) - r, err := coupleAPIErrors(req.Get(e)) + e := formatAPIPath("object-storage/buckets/%s/%s/ssl", clusterOrRegionID, bucket) + response, err := doGETRequest[ObjectStorageBucketCert](ctx, c, e) if err != nil { return nil, err } - return r.Result().(*ObjectStorageBucketCert), nil + + return response, nil } // DeleteObjectStorageBucketCert deletes an ObjectStorageBucketCert func (c *Client) DeleteObjectStorageBucketCert(ctx context.Context, clusterOrRegionID, bucket string) error { - clusterOrRegionID = url.PathEscape(clusterOrRegionID) - bucket = url.PathEscape(bucket) - e := fmt.Sprintf("object-storage/buckets/%s/%s/ssl", clusterOrRegionID, bucket) - _, err := coupleAPIErrors(c.R(ctx).Delete(e)) + e := formatAPIPath("object-storage/buckets/%s/%s/ssl", clusterOrRegionID, bucket) + err := doDELETERequest(ctx, c, e) return err } diff --git a/object_storage_buckets.go b/object_storage_buckets.go index 7c78613f1..f5e5cd084 100644 --- a/object_storage_buckets.go +++ b/object_storage_buckets.go @@ -3,11 +3,8 @@ package linodego import ( "context" "encoding/json" - "fmt" - "net/url" "time" - "github.com/go-resty/resty/v2" "github.com/linode/linodego/internal/parseabletime" ) @@ -90,116 +87,70 @@ const ( ACLPublicReadWrite ObjectStorageACL = "public-read-write" ) -// ObjectStorageBucketsPagedResponse represents a paginated ObjectStorageBucket API response -type ObjectStorageBucketsPagedResponse struct { - *PageOptions - Data []ObjectStorageBucket `json:"data"` -} - -// endpoint gets the endpoint URL for ObjectStorageBucket -func (ObjectStorageBucketsPagedResponse) endpoint(args ...any) string { - endpoint := "object-storage/buckets" - if len(args) > 0 { - endpoint = fmt.Sprintf(endpoint+"/%s", url.PathEscape(args[0].(string))) - } - return endpoint -} - -func (resp *ObjectStorageBucketsPagedResponse) castResult(r *resty.Request, e string) (int, int, error) { - res, err := coupleAPIErrors(r.SetResult(ObjectStorageBucketsPagedResponse{}).Get(e)) - if err != nil { - return 0, 0, err - } - castedRes := res.Result().(*ObjectStorageBucketsPagedResponse) - resp.Data = append(resp.Data, castedRes.Data...) - return castedRes.Pages, castedRes.Results, nil -} - // ListObjectStorageBuckets lists ObjectStorageBuckets func (c *Client) ListObjectStorageBuckets(ctx context.Context, opts *ListOptions) ([]ObjectStorageBucket, error) { - response := ObjectStorageBucketsPagedResponse{} - err := c.listHelper(ctx, &response, opts) + response, err := getPaginatedResults[ObjectStorageBucket](ctx, c, "object-storage/buckets", opts) if err != nil { return nil, err } - return response.Data, nil + + return response, nil } // ListObjectStorageBucketsInCluster lists all ObjectStorageBuckets of a cluster func (c *Client) ListObjectStorageBucketsInCluster(ctx context.Context, opts *ListOptions, clusterOrRegionID string) ([]ObjectStorageBucket, error) { - response := ObjectStorageBucketsPagedResponse{} - err := c.listHelper(ctx, &response, opts, clusterOrRegionID) + response, err := getPaginatedResults[ObjectStorageBucket](ctx, c, formatAPIPath("object-storage/buckets/%s", clusterOrRegionID), opts) if err != nil { return nil, err } - return response.Data, nil + + return response, nil } // GetObjectStorageBucket gets the ObjectStorageBucket with the provided label func (c *Client) GetObjectStorageBucket(ctx context.Context, clusterOrRegionID, label string) (*ObjectStorageBucket, error) { - label = url.PathEscape(label) - clusterOrRegionID = url.PathEscape(clusterOrRegionID) - e := fmt.Sprintf("object-storage/buckets/%s/%s", clusterOrRegionID, label) - req := c.R(ctx).SetResult(&ObjectStorageBucket{}) - r, err := coupleAPIErrors(req.Get(e)) + e := formatAPIPath("object-storage/buckets/%s/%s", clusterOrRegionID, label) + response, err := doGETRequest[ObjectStorageBucket](ctx, c, e) if err != nil { return nil, err } - return r.Result().(*ObjectStorageBucket), nil + + return response, nil } // CreateObjectStorageBucket creates an ObjectStorageBucket func (c *Client) CreateObjectStorageBucket(ctx context.Context, opts ObjectStorageBucketCreateOptions) (*ObjectStorageBucket, error) { - body, err := json.Marshal(opts) - if err != nil { - return nil, err - } - e := "object-storage/buckets" - req := c.R(ctx).SetResult(&ObjectStorageBucket{}).SetBody(string(body)) - r, err := coupleAPIErrors(req.Post(e)) + response, err := doPOSTRequest[ObjectStorageBucket](ctx, c, e, opts) if err != nil { return nil, err } - return r.Result().(*ObjectStorageBucket), nil + + return response, nil } // GetObjectStorageBucketAccess gets the current access config for a bucket func (c *Client) GetObjectStorageBucketAccess(ctx context.Context, clusterOrRegionID, label string) (*ObjectStorageBucketAccess, error) { - label = url.PathEscape(label) - clusterOrRegionID = url.PathEscape(clusterOrRegionID) - e := fmt.Sprintf("object-storage/buckets/%s/%s/access", clusterOrRegionID, label) - req := c.R(ctx).SetResult(&ObjectStorageBucketAccess{}) - r, err := coupleAPIErrors(req.Get(e)) + e := formatAPIPath("object-storage/buckets/%s/%s/access", clusterOrRegionID, label) + response, err := doGETRequest[ObjectStorageBucketAccess](ctx, c, e) if err != nil { return nil, err } - return r.Result().(*ObjectStorageBucketAccess), nil + return response, nil } // UpdateObjectStorageBucketAccess updates the access configuration for an ObjectStorageBucket func (c *Client) UpdateObjectStorageBucketAccess(ctx context.Context, clusterOrRegionID, label string, opts ObjectStorageBucketUpdateAccessOptions) error { - body, err := json.Marshal(opts) - if err != nil { - return err - } + e := formatAPIPath("object-storage/buckets/%s/%s/access", clusterOrRegionID, label) + _, err := doPOSTRequest[ObjectStorageBucketAccess](ctx, c, e, opts) - label = url.PathEscape(label) - clusterOrRegionID = url.PathEscape(clusterOrRegionID) - e := fmt.Sprintf("object-storage/buckets/%s/%s/access", clusterOrRegionID, label) - _, err = coupleAPIErrors(c.R(ctx).SetBody(string(body)).Post(e)) - if err != nil { - return err - } - - return nil + return err } // DeleteObjectStorageBucket deletes the ObjectStorageBucket with the specified label func (c *Client) DeleteObjectStorageBucket(ctx context.Context, clusterOrRegionID, label string) error { - label = url.PathEscape(label) - e := fmt.Sprintf("object-storage/buckets/%s/%s", clusterOrRegionID, label) - _, err := coupleAPIErrors(c.R(ctx).Delete(e)) + e := formatAPIPath("object-storage/buckets/%s/%s", clusterOrRegionID, label) + err := doDELETERequest(ctx, c, e) return err } diff --git a/object_storage_clusters.go b/object_storage_clusters.go index cd9c446fa..f1d2c498d 100644 --- a/object_storage_clusters.go +++ b/object_storage_clusters.go @@ -2,10 +2,6 @@ package linodego import ( "context" - "fmt" - "net/url" - - "github.com/go-resty/resty/v2" ) // ObjectStorageCluster represents a linode object storage cluster object @@ -17,47 +13,24 @@ type ObjectStorageCluster struct { StaticSiteDomain string `json:"static_site_domain"` } -// ObjectStorageClustersPagedResponse represents a linode API response for listing -type ObjectStorageClustersPagedResponse struct { - *PageOptions - Data []ObjectStorageCluster `json:"data"` -} - -// endpoint gets the endpoint URL for ObjectStorageCluster -func (ObjectStorageClustersPagedResponse) endpoint(_ ...any) string { - return "object-storage/clusters" -} - -func (resp *ObjectStorageClustersPagedResponse) castResult(r *resty.Request, e string) (int, int, error) { - res, err := coupleAPIErrors(r.SetResult(ObjectStorageClustersPagedResponse{}).Get(e)) - if err != nil { - return 0, 0, err - } - castedRes := res.Result().(*ObjectStorageClustersPagedResponse) - resp.Data = append(resp.Data, castedRes.Data...) - return castedRes.Pages, castedRes.Results, nil -} - -// Deprecated: ListObjectStorageClusters uses a deprecated API endpoint. // ListObjectStorageClusters lists ObjectStorageClusters func (c *Client) ListObjectStorageClusters(ctx context.Context, opts *ListOptions) ([]ObjectStorageCluster, error) { - response := ObjectStorageClustersPagedResponse{} - err := c.listHelper(ctx, &response, opts) + response, err := getPaginatedResults[ObjectStorageCluster](ctx, c, "object-storage/clusters", opts) if err != nil { return nil, err } - return response.Data, nil + + return response, nil } // Deprecated: GetObjectStorageCluster uses a deprecated API endpoint. // GetObjectStorageCluster gets the template with the provided ID func (c *Client) GetObjectStorageCluster(ctx context.Context, clusterID string) (*ObjectStorageCluster, error) { - clusterID = url.PathEscape(clusterID) - e := fmt.Sprintf("object-storage/clusters/%s", clusterID) - req := c.R(ctx).SetResult(&ObjectStorageCluster{}) - r, err := coupleAPIErrors(req.Get(e)) + e := formatAPIPath("object-storage/clusters/%s", clusterID) + response, err := doGETRequest[ObjectStorageCluster](ctx, c, e) if err != nil { return nil, err } - return r.Result().(*ObjectStorageCluster), nil + + return response, nil } diff --git a/paged_response_structs.go b/paged_response_structs.go index 73b3c6b86..9fcafde54 100644 --- a/paged_response_structs.go +++ b/paged_response_structs.go @@ -109,12 +109,21 @@ type NodeBalancerConfigsPagedResponse legacyPagedResponse[NodeBalancerConfig] // Deprecated: NodeBalancerNodesPagedResponse exists for historical compatibility and should not be used. type NodeBalancerNodesPagedResponse legacyPagedResponse[NodeBalancerNode] +// Deprecated: NodeBalancerFirewallsPagedResponse exists for historical compatibility and should not be used. +type NodeBalancerFirewallsPagedResponse legacyPagedResponse[Firewall] + // Deprecated: NotificationsPagedResponse exists for historical compatibility and should not be used. type NotificationsPagedResponse legacyPagedResponse[Notification] // Deprecated: OAuthClientsPagedResponse exists for historical compatibility and should not be used. type OAuthClientsPagedResponse legacyPagedResponse[OAuthClient] +// Deprecated: ObjectStorageBucketsPagedResponse exists for historical compatibility and should not be used. +type ObjectStorageBucketsPagedResponse legacyPagedResponse[ObjectStorageBucket] + +// Deprecated: ObjectStorageClustersPagedResponse exists for historical compatibility and should not be used. +type ObjectStorageClustersPagedResponse legacyPagedResponse[ObjectStorageCluster] + // Deprecated: PaymentsPagedResponse exists for historical compatibility and should not be used. type PaymentsPagedResponse legacyPagedResponse[Payment] diff --git a/test/integration/fixtures/TestNodeBalancerFirewalls_List.yaml b/test/integration/fixtures/TestNodeBalancerFirewalls_List.yaml index edcd5baff..da205b1e0 100644 --- a/test/integration/fixtures/TestNodeBalancerFirewalls_List.yaml +++ b/test/integration/fixtures/TestNodeBalancerFirewalls_List.yaml @@ -57,10 +57,10 @@ interactions: 5}, "site_type": "core"}, {"id": "us-ord", "label": "Chicago, IL", "country": "us", "capabilities": ["Linodes", "Backups", "NodeBalancers", "Block Storage", "Object Storage", "GPU Linodes", "Kubernetes", "Cloud Firewall", "Vlans", "VPCs", - "Managed Databases", "Metadata", "Premium Plans"], "status": "ok", "resolvers": - {"ipv4": "172.232.0.17, 172.232.0.16, 172.232.0.21, 172.232.0.13, 172.232.0.22, - 172.232.0.9, 172.232.0.19, 172.232.0.20, 172.232.0.15, 172.232.0.18", "ipv6": - "1234::5678, 1234::5678, 1234::5678, + "Managed Databases", "Metadata", "Premium Plans", "Placement Group"], "status": + "ok", "resolvers": {"ipv4": "172.232.0.17, 172.232.0.16, 172.232.0.21, 172.232.0.13, + 172.232.0.22, 172.232.0.9, 172.232.0.19, 172.232.0.20, 172.232.0.15, 172.232.0.18", + "ipv6": "1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678"}, "placement_group_limits": {"maximum_pgs_per_customer": @@ -156,8 +156,8 @@ interactions: 100, "maximum_linodes_per_pg": 5}, "site_type": "core"}, {"id": "us-mia", "label": "Miami, FL", "country": "us", "capabilities": ["Linodes", "Backups", "NodeBalancers", "Block Storage", "Object Storage", "Kubernetes", "Cloud Firewall", "Vlans", - "VPCs", "Metadata", "Premium Plans"], "status": "ok", "resolvers": {"ipv4": - "172.233.160.34, 172.233.160.27, 172.233.160.30, 172.233.160.29, 172.233.160.32, + "VPCs", "Metadata", "Premium Plans", "Placement Group"], "status": "ok", "resolvers": + {"ipv4": "172.233.160.34, 172.233.160.27, 172.233.160.30, 172.233.160.29, 172.233.160.32, 172.233.160.28, 172.233.160.33, 172.233.160.26, 172.233.160.25, 172.233.160.31", "ipv6": "1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, @@ -183,6 +183,25 @@ interactions: 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678"}, "placement_group_limits": {"maximum_pgs_per_customer": + 100, "maximum_linodes_per_pg": 5}, "site_type": "core"}, {"id": "gb-lon", "label": + "London 2, UK", "country": "gb", "capabilities": ["Linodes", "Backups", "NodeBalancers", + "Block Storage", "Kubernetes", "Cloud Firewall", "Vlans", "VPCs", "Metadata", + "Premium Plans"], "status": "ok", "resolvers": {"ipv4": "172.236.0.46, 172.236.0.50, + 172.236.0.47, 172.236.0.53, 172.236.0.52, 172.236.0.45, 172.236.0.49, 172.236.0.51, + 172.236.0.54, 172.236.0.48", "ipv6": "1234::5678, 1234::5678, + 1234::5678, 1234::5678, 1234::5678, + 1234::5678, 1234::5678, 1234::5678, + 1234::5678, 1234::5678"}, "placement_group_limits": + {"maximum_pgs_per_customer": 100, "maximum_linodes_per_pg": 5}, "site_type": + "core"}, {"id": "au-mel", "label": "Melbourne, AU", "country": "au", "capabilities": + ["Linodes", "Backups", "NodeBalancers", "Block Storage", "Kubernetes", "Cloud + Firewall", "Vlans", "VPCs", "Metadata", "Premium Plans"], "status": "ok", "resolvers": + {"ipv4": "172.236.32.23, 172.236.32.35, 172.236.32.30, 172.236.32.28, 172.236.32.32, + 172.236.32.33, 172.236.32.27, 172.236.32.37, 172.236.32.29, 172.236.32.34", + "ipv6": "1234::5678, 1234::5678, 1234::5678, + 1234::5678, 1234::5678, 1234::5678, + 1234::5678, 1234::5678, 1234::5678, + 1234::5678"}, "placement_group_limits": {"maximum_pgs_per_customer": 100, "maximum_linodes_per_pg": 5}, "site_type": "core"}, {"id": "us-central", "label": "Dallas, TX", "country": "us", "capabilities": ["Linodes", "Backups", "NodeBalancers", "Block Storage", "Kubernetes", "Cloud Firewall", "Vlans", "Block @@ -251,7 +270,7 @@ interactions: "1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678"}, "placement_group_limits": {"maximum_pgs_per_customer": 100, "maximum_linodes_per_pg": 5}, "site_type": - "core"}], "page": 1, "pages": 1, "results": 25}' + "core"}], "page": 1, "pages": 1, "results": 27}' headers: Access-Control-Allow-Credentials: - "true" @@ -272,7 +291,7 @@ interactions: Content-Type: - application/json Expires: - - Fri, 31 May 2024 17:28:41 GMT + - Mon, 08 Jul 2024 15:11:47 GMT Pragma: - no-cache Strict-Transport-Security: @@ -289,10 +308,7 @@ interactions: - DENY - DENY X-Oauth-Scopes: - - account:read_write databases:read_write domains:read_write events:read_write - firewall:read_write images:read_write ips:read_write linodes:read_write lke:read_write - longview:read_write nodebalancers:read_write object_storage:read_write stackscripts:read_write - volumes:read_write vpc:read_write + - '*' X-Ratelimit-Limit: - "400" X-Xss-Protection: @@ -301,7 +317,7 @@ interactions: code: 200 duration: "" - request: - body: '{"label":"go-test-def","region":"ap-west","client_conn_throttle":20,"tags":null,"firewall_id":501400}' + body: '{"label":"go-test-def","region":"ap-west","client_conn_throttle":20,"tags":null,"firewall_id":640501}' form: {} headers: Accept: @@ -313,10 +329,11 @@ interactions: url: https://api.linode.com/v4beta/nodebalancers method: POST response: - body: '{"id": 694197, "label": "go-test-def", "region": "ap-west", "hostname": - "172-232-86-45.ip.linodeusercontent.com", "ipv4": "172.232.86.45", "ipv6": "1234::5678", - "created": "2018-01-02T03:04:05", "updated": "2018-01-02T03:04:05", "client_conn_throttle": - 20, "tags": [], "transfer": {"in": null, "out": null, "total": null}}' + body: '{"id": 768105, "label": "go-test-def", "region": "ap-west", "hostname": + "172-105-44-152.ip.linodeusercontent.com", "ipv4": "172.105.44.152", "ipv6": + "1234::5678", "created": "2018-01-02T03:04:05", "updated": "2018-01-02T03:04:05", + "client_conn_throttle": 20, "tags": [], "transfer": {"in": null, "out": null, + "total": null}}' headers: Access-Control-Allow-Credentials: - "true" @@ -333,13 +350,13 @@ interactions: Connection: - keep-alive Content-Length: - - "334" + - "336" Content-Security-Policy: - default-src 'none' Content-Type: - application/json Expires: - - Fri, 31 May 2024 17:28:42 GMT + - Mon, 08 Jul 2024 15:11:47 GMT Pragma: - no-cache Strict-Transport-Security: @@ -354,10 +371,7 @@ interactions: - DENY - DENY X-Oauth-Scopes: - - account:read_write databases:read_write domains:read_write events:read_write - firewall:read_write images:read_write ips:read_write linodes:read_write lke:read_write - longview:read_write nodebalancers:read_write object_storage:read_write stackscripts:read_write - volumes:read_write vpc:read_write + - '*' X-Ratelimit-Limit: - "400" X-Xss-Protection: @@ -375,16 +389,16 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/nodebalancers/694197/firewalls + url: https://api.linode.com/v4beta/nodebalancers/768105/firewalls?page=1 method: GET response: - body: '{"data": [{"id": 501400, "label": "cloudfw-1717176495111377000", "created": + body: '{"data": [{"id": 640501, "label": "cloudfw-1720451506635377000", "created": "2018-01-02T03:04:05", "updated": "2018-01-02T03:04:05", "status": "enabled", "rules": {"inbound": [{"action": "ACCEPT", "label": "ssh-inbound-accept-local", - "ports": "22", "protocol": "TCP", "addresses": {"ipv4": ["66.183.56.141/32"]}}], + "ports": "22", "protocol": "TCP", "addresses": {"ipv4": ["24.193.170.156/32"]}}], "inbound_policy": "DROP", "outbound": [], "outbound_policy": "ACCEPT", "version": - 1, "fingerprint": "34cf15cc"}, "tags": [], "entities": [{"id": 694197, "type": - "nodebalancer", "label": "go-test-def", "url": "/v4/nodebalancers/694197"}]}], + 1, "fingerprint": "1c7e6183"}, "tags": [], "entities": [{"id": 768105, "type": + "nodebalancer", "label": "go-test-def", "url": "/v4/nodebalancers/768105"}]}], "page": 1, "pages": 1, "results": 1}' headers: Access-Control-Allow-Credentials: @@ -402,13 +416,13 @@ interactions: Connection: - keep-alive Content-Length: - - "591" + - "592" Content-Security-Policy: - default-src 'none' Content-Type: - application/json Expires: - - Fri, 31 May 2024 17:28:42 GMT + - Mon, 08 Jul 2024 15:11:47 GMT Pragma: - no-cache Strict-Transport-Security: @@ -424,10 +438,7 @@ interactions: - DENY - DENY X-Oauth-Scopes: - - account:read_write databases:read_write domains:read_write events:read_write - firewall:read_write images:read_write ips:read_write linodes:read_write lke:read_write - longview:read_write nodebalancers:read_write object_storage:read_write stackscripts:read_write - volumes:read_write vpc:read_write + - '*' X-Ratelimit-Limit: - "400" X-Xss-Protection: @@ -445,7 +456,7 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/nodebalancers/694197 + url: https://api.linode.com/v4beta/nodebalancers/768105 method: DELETE response: body: '{}' @@ -471,7 +482,7 @@ interactions: Content-Type: - application/json Expires: - - Fri, 31 May 2024 17:28:42 GMT + - Mon, 08 Jul 2024 15:11:47 GMT Pragma: - no-cache Strict-Transport-Security: @@ -486,10 +497,7 @@ interactions: - DENY - DENY X-Oauth-Scopes: - - account:read_write databases:read_write domains:read_write events:read_write - firewall:read_write images:read_write ips:read_write linodes:read_write lke:read_write - longview:read_write nodebalancers:read_write object_storage:read_write stackscripts:read_write - volumes:read_write vpc:read_write + - '*' X-Ratelimit-Limit: - "400" X-Xss-Protection: diff --git a/test/integration/fixtures/TestNodeBalancerStats_Get.yaml b/test/integration/fixtures/TestNodeBalancerStats_Get.yaml index 75e3d68a4..31cf46de6 100644 --- a/test/integration/fixtures/TestNodeBalancerStats_Get.yaml +++ b/test/integration/fixtures/TestNodeBalancerStats_Get.yaml @@ -57,10 +57,10 @@ interactions: 5}, "site_type": "core"}, {"id": "us-ord", "label": "Chicago, IL", "country": "us", "capabilities": ["Linodes", "Backups", "NodeBalancers", "Block Storage", "Object Storage", "GPU Linodes", "Kubernetes", "Cloud Firewall", "Vlans", "VPCs", - "Managed Databases", "Metadata", "Premium Plans"], "status": "ok", "resolvers": - {"ipv4": "172.232.0.17, 172.232.0.16, 172.232.0.21, 172.232.0.13, 172.232.0.22, - 172.232.0.9, 172.232.0.19, 172.232.0.20, 172.232.0.15, 172.232.0.18", "ipv6": - "1234::5678, 1234::5678, 1234::5678, + "Managed Databases", "Metadata", "Premium Plans", "Placement Group"], "status": + "ok", "resolvers": {"ipv4": "172.232.0.17, 172.232.0.16, 172.232.0.21, 172.232.0.13, + 172.232.0.22, 172.232.0.9, 172.232.0.19, 172.232.0.20, 172.232.0.15, 172.232.0.18", + "ipv6": "1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678"}, "placement_group_limits": {"maximum_pgs_per_customer": @@ -156,8 +156,8 @@ interactions: 100, "maximum_linodes_per_pg": 5}, "site_type": "core"}, {"id": "us-mia", "label": "Miami, FL", "country": "us", "capabilities": ["Linodes", "Backups", "NodeBalancers", "Block Storage", "Object Storage", "Kubernetes", "Cloud Firewall", "Vlans", - "VPCs", "Metadata", "Premium Plans"], "status": "ok", "resolvers": {"ipv4": - "172.233.160.34, 172.233.160.27, 172.233.160.30, 172.233.160.29, 172.233.160.32, + "VPCs", "Metadata", "Premium Plans", "Placement Group"], "status": "ok", "resolvers": + {"ipv4": "172.233.160.34, 172.233.160.27, 172.233.160.30, 172.233.160.29, 172.233.160.32, 172.233.160.28, 172.233.160.33, 172.233.160.26, 172.233.160.25, 172.233.160.31", "ipv6": "1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, @@ -183,6 +183,25 @@ interactions: 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678"}, "placement_group_limits": {"maximum_pgs_per_customer": + 100, "maximum_linodes_per_pg": 5}, "site_type": "core"}, {"id": "gb-lon", "label": + "London 2, UK", "country": "gb", "capabilities": ["Linodes", "Backups", "NodeBalancers", + "Block Storage", "Kubernetes", "Cloud Firewall", "Vlans", "VPCs", "Metadata", + "Premium Plans"], "status": "ok", "resolvers": {"ipv4": "172.236.0.46, 172.236.0.50, + 172.236.0.47, 172.236.0.53, 172.236.0.52, 172.236.0.45, 172.236.0.49, 172.236.0.51, + 172.236.0.54, 172.236.0.48", "ipv6": "1234::5678, 1234::5678, + 1234::5678, 1234::5678, 1234::5678, + 1234::5678, 1234::5678, 1234::5678, + 1234::5678, 1234::5678"}, "placement_group_limits": + {"maximum_pgs_per_customer": 100, "maximum_linodes_per_pg": 5}, "site_type": + "core"}, {"id": "au-mel", "label": "Melbourne, AU", "country": "au", "capabilities": + ["Linodes", "Backups", "NodeBalancers", "Block Storage", "Kubernetes", "Cloud + Firewall", "Vlans", "VPCs", "Metadata", "Premium Plans"], "status": "ok", "resolvers": + {"ipv4": "172.236.32.23, 172.236.32.35, 172.236.32.30, 172.236.32.28, 172.236.32.32, + 172.236.32.33, 172.236.32.27, 172.236.32.37, 172.236.32.29, 172.236.32.34", + "ipv6": "1234::5678, 1234::5678, 1234::5678, + 1234::5678, 1234::5678, 1234::5678, + 1234::5678, 1234::5678, 1234::5678, + 1234::5678"}, "placement_group_limits": {"maximum_pgs_per_customer": 100, "maximum_linodes_per_pg": 5}, "site_type": "core"}, {"id": "us-central", "label": "Dallas, TX", "country": "us", "capabilities": ["Linodes", "Backups", "NodeBalancers", "Block Storage", "Kubernetes", "Cloud Firewall", "Vlans", "Block @@ -251,7 +270,7 @@ interactions: "1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678, 1234::5678"}, "placement_group_limits": {"maximum_pgs_per_customer": 100, "maximum_linodes_per_pg": 5}, "site_type": - "core"}], "page": 1, "pages": 1, "results": 25}' + "core"}], "page": 1, "pages": 1, "results": 27}' headers: Access-Control-Allow-Credentials: - "true" @@ -272,7 +291,7 @@ interactions: Content-Type: - application/json Expires: - - Fri, 31 May 2024 17:28:42 GMT + - Mon, 08 Jul 2024 15:10:56 GMT Pragma: - no-cache Strict-Transport-Security: @@ -289,10 +308,7 @@ interactions: - DENY - DENY X-Oauth-Scopes: - - account:read_write databases:read_write domains:read_write events:read_write - firewall:read_write images:read_write ips:read_write linodes:read_write lke:read_write - longview:read_write nodebalancers:read_write object_storage:read_write stackscripts:read_write - volumes:read_write vpc:read_write + - '*' X-Ratelimit-Limit: - "400" X-Xss-Protection: @@ -301,7 +317,7 @@ interactions: code: 200 duration: "" - request: - body: '{"label":"go-test-def","region":"ap-west","client_conn_throttle":20,"tags":null,"firewall_id":501400}' + body: '{"label":"go-test-def","region":"ap-west","client_conn_throttle":20,"tags":null,"firewall_id":640498}' form: {} headers: Accept: @@ -313,8 +329,8 @@ interactions: url: https://api.linode.com/v4beta/nodebalancers method: POST response: - body: '{"id": 694198, "label": "go-test-def", "region": "ap-west", "hostname": - "172-105-45-147.ip.linodeusercontent.com", "ipv4": "172.105.45.147", "ipv6": + body: '{"id": 768104, "label": "go-test-def", "region": "ap-west", "hostname": + "172-232-86-106.ip.linodeusercontent.com", "ipv4": "172.232.86.106", "ipv6": "1234::5678", "created": "2018-01-02T03:04:05", "updated": "2018-01-02T03:04:05", "client_conn_throttle": 20, "tags": [], "transfer": {"in": null, "out": null, "total": null}}' @@ -340,7 +356,7 @@ interactions: Content-Type: - application/json Expires: - - Fri, 31 May 2024 17:28:42 GMT + - Mon, 08 Jul 2024 15:10:56 GMT Pragma: - no-cache Strict-Transport-Security: @@ -355,10 +371,7 @@ interactions: - DENY - DENY X-Oauth-Scopes: - - account:read_write databases:read_write domains:read_write events:read_write - firewall:read_write images:read_write ips:read_write linodes:read_write lke:read_write - longview:read_write nodebalancers:read_write object_storage:read_write stackscripts:read_write - volumes:read_write vpc:read_write + - '*' X-Ratelimit-Limit: - "400" X-Xss-Protection: @@ -376,7 +389,7 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/nodebalancers/694198/stats + url: https://api.linode.com/v4beta/nodebalancers/768104/stats method: GET response: body: '{"errors": [{"reason": "Stats are unavailable at this time."}]}' @@ -396,7 +409,7 @@ interactions: Content-Type: - application/json Expires: - - Fri, 31 May 2024 17:28:53 GMT + - Mon, 08 Jul 2024 15:11:07 GMT Pragma: - no-cache Vary: @@ -406,10 +419,7 @@ interactions: X-Frame-Options: - DENY X-Oauth-Scopes: - - account:read_write databases:read_write domains:read_write events:read_write - firewall:read_write images:read_write ips:read_write linodes:read_write lke:read_write - longview:read_write nodebalancers:read_write object_storage:read_write stackscripts:read_write - volumes:read_write vpc:read_write + - '*' X-Ratelimit-Limit: - "50" status: 400 Bad Request @@ -425,7 +435,7 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/nodebalancers/694198 + url: https://api.linode.com/v4beta/nodebalancers/768104 method: DELETE response: body: '{}' @@ -451,7 +461,7 @@ interactions: Content-Type: - application/json Expires: - - Fri, 31 May 2024 17:28:53 GMT + - Mon, 08 Jul 2024 15:11:07 GMT Pragma: - no-cache Strict-Transport-Security: @@ -466,10 +476,7 @@ interactions: - DENY - DENY X-Oauth-Scopes: - - account:read_write databases:read_write domains:read_write events:read_write - firewall:read_write images:read_write ips:read_write linodes:read_write lke:read_write - longview:read_write nodebalancers:read_write object_storage:read_write stackscripts:read_write - volumes:read_write vpc:read_write + - '*' X-Ratelimit-Limit: - "400" X-Xss-Protection: diff --git a/test/integration/fixtures/TestObjectStorageBucketCert.yaml b/test/integration/fixtures/TestObjectStorageBucketCert.yaml index d34a38aa0..21ad4a17c 100644 --- a/test/integration/fixtures/TestObjectStorageBucketCert.yaml +++ b/test/integration/fixtures/TestObjectStorageBucketCert.yaml @@ -16,7 +16,7 @@ interactions: response: body: '{"hostname": "linode-obj-bucket-cert-test.xyz.us-east-1.linodeobjects.com", "label": "linode-obj-bucket-cert-test.xyz", "created": "2018-01-02T03:04:05", - "cluster": "us-east-1", "size": 0, "objects": 0}' + "region": "us-east", "cluster": "us-east-1", "size": 0, "objects": 0}' headers: Access-Control-Allow-Credentials: - "true" @@ -29,15 +29,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "202" + - "223" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:23 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -52,7 +56,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -86,15 +90,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "13" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:24 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -109,7 +117,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -141,16 +149,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=0, s-maxage=0, no-cache, no-store - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "13" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:25 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -166,7 +177,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -198,15 +209,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "2" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:26 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -221,7 +236,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -253,15 +268,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "2" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:28 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -276,7 +295,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK diff --git a/test/integration/fixtures/TestObjectStorageBucket_Access_Get.yaml b/test/integration/fixtures/TestObjectStorageBucket_Access_Get.yaml index 0ea9abc45..8c72c1fb2 100644 --- a/test/integration/fixtures/TestObjectStorageBucket_Access_Get.yaml +++ b/test/integration/fixtures/TestObjectStorageBucket_Access_Get.yaml @@ -15,8 +15,8 @@ interactions: method: POST response: body: '{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", "label": - "go-bucket-test-def", "created": "2018-01-02T03:04:05", "cluster": "us-east-1", - "size": 0, "objects": 0}' + "go-bucket-test-def", "created": "2018-01-02T03:04:05", "region": "us-east", + "cluster": "us-east-1", "size": 0, "objects": 0}' headers: Access-Control-Allow-Credentials: - "true" @@ -29,15 +29,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "176" + - "197" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:08 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -52,7 +56,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -71,9 +75,9 @@ interactions: url: https://api.linode.com/v4beta/object-storage/buckets/us-east-1/go-bucket-test-def/access method: GET response: - body: '{"acl": "authenticated-read", "acl_xml": "fa25bc43-2cb0-43c7-b8bd-994243d8a697fa25bc43-2cb0-43c7-b8bd-994243d8a697640757b5-ebe9-45b1-abd5-581f215ef89e640757b5-ebe9-45b1-abd5-581f215ef89ehttp://acs.amazonaws.com/groups/global/AuthenticatedUsersREADfa25bc43-2cb0-43c7-b8bd-994243d8a697fa25bc43-2cb0-43c7-b8bd-994243d8a697FULL_CONTROL", + xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"CanonicalUser\">640757b5-ebe9-45b1-abd5-581f215ef89e640757b5-ebe9-45b1-abd5-581f215ef89eFULL_CONTROL", "cors_enabled": false, "cors_xml": null}' headers: Access-Control-Allow-Credentials: @@ -87,16 +91,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=0, s-maxage=0, no-cache, no-store - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "808" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:09 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -112,7 +119,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -144,15 +151,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "2" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:13 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -167,7 +178,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK diff --git a/test/integration/fixtures/TestObjectStorageBucket_Access_Update.yaml b/test/integration/fixtures/TestObjectStorageBucket_Access_Update.yaml index e0a33b0d8..ceed13b48 100644 --- a/test/integration/fixtures/TestObjectStorageBucket_Access_Update.yaml +++ b/test/integration/fixtures/TestObjectStorageBucket_Access_Update.yaml @@ -15,8 +15,8 @@ interactions: method: POST response: body: '{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", "label": - "go-bucket-test-def", "created": "2018-01-02T03:04:05", "cluster": "us-east-1", - "size": 0, "objects": 0}' + "go-bucket-test-def", "created": "2018-01-02T03:04:05", "region": "us-east", + "cluster": "us-east-1", "size": 0, "objects": 0}' headers: Access-Control-Allow-Credentials: - "true" @@ -29,15 +29,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "176" + - "197" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:14 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -52,7 +56,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -84,15 +88,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "2" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:16 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -107,7 +115,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -126,8 +134,8 @@ interactions: url: https://api.linode.com/v4beta/object-storage/buckets/us-east-1/go-bucket-test-def/access method: GET response: - body: '{"acl": "private", "acl_xml": "fa25bc43-2cb0-43c7-b8bd-994243d8a697fa25bc43-2cb0-43c7-b8bd-994243d8a697fa25bc43-2cb0-43c7-b8bd-994243d8a697fa25bc43-2cb0-43c7-b8bd-994243d8a697FULL_CONTROL", + body: '{"acl": "private", "acl_xml": "640757b5-ebe9-45b1-abd5-581f215ef89e640757b5-ebe9-45b1-abd5-581f215ef89e640757b5-ebe9-45b1-abd5-581f215ef89e640757b5-ebe9-45b1-abd5-581f215ef89eFULL_CONTROL", "cors_enabled": false, "cors_xml": null}' headers: Access-Control-Allow-Credentials: @@ -141,16 +149,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=0, s-maxage=0, no-cache, no-store - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "591" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:17 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -166,7 +177,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -198,15 +209,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "2" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:19 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -221,7 +236,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK diff --git a/test/integration/fixtures/TestObjectStorageBucket_Create.yaml b/test/integration/fixtures/TestObjectStorageBucket_Create.yaml index b9aeb622e..545774bd0 100644 --- a/test/integration/fixtures/TestObjectStorageBucket_Create.yaml +++ b/test/integration/fixtures/TestObjectStorageBucket_Create.yaml @@ -15,8 +15,8 @@ interactions: method: POST response: body: '{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", "label": - "go-bucket-test-def", "created": "2018-01-02T03:04:05", "cluster": "us-east-1", - "size": 0, "objects": 0}' + "go-bucket-test-def", "created": "2018-01-02T03:04:05", "region": "us-east", + "cluster": "us-east-1", "size": 0, "objects": 0}' headers: Access-Control-Allow-Credentials: - "true" @@ -29,15 +29,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "176" + - "197" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:32 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -52,7 +56,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -84,15 +88,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "2" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:34 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -107,7 +115,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK diff --git a/test/integration/fixtures/TestObjectStorageBucket_GetFound.yaml b/test/integration/fixtures/TestObjectStorageBucket_GetFound.yaml index 75e6a6997..02fbb1ad2 100644 --- a/test/integration/fixtures/TestObjectStorageBucket_GetFound.yaml +++ b/test/integration/fixtures/TestObjectStorageBucket_GetFound.yaml @@ -15,8 +15,8 @@ interactions: method: POST response: body: '{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", "label": - "go-bucket-test-def", "created": "2018-01-02T03:04:05", "cluster": "us-east-1", - "size": 0, "objects": 0}' + "go-bucket-test-def", "created": "2018-01-02T03:04:05", "region": "us-east", + "cluster": "us-east-1", "size": 0, "objects": 0}' headers: Access-Control-Allow-Credentials: - "true" @@ -29,15 +29,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "176" + - "197" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:40 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -52,7 +56,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -72,8 +76,8 @@ interactions: method: GET response: body: '{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", "label": - "go-bucket-test-def", "created": "2018-01-02T03:04:05", "cluster": "us-east-1", - "size": 0, "objects": 0}' + "go-bucket-test-def", "created": "2018-01-02T03:04:05", "region": "us-east", + "cluster": "us-east-1", "size": 0, "objects": 0}' headers: Access-Control-Allow-Credentials: - "true" @@ -86,16 +90,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=0, s-maxage=0, no-cache, no-store - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "176" + - "197" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:41 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -111,7 +118,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -143,15 +150,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "2" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:43 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -166,7 +177,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK diff --git a/test/integration/fixtures/TestObjectStorageBucket_GetMissing.yaml b/test/integration/fixtures/TestObjectStorageBucket_GetMissing.yaml index 07c671eb9..8ebab68ed 100644 --- a/test/integration/fixtures/TestObjectStorageBucket_GetMissing.yaml +++ b/test/integration/fixtures/TestObjectStorageBucket_GetMissing.yaml @@ -15,8 +15,8 @@ interactions: method: POST response: body: '{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", "label": - "go-bucket-test-def", "created": "2018-01-02T03:04:05", "cluster": "us-east-1", - "size": 0, "objects": 0}' + "go-bucket-test-def", "created": "2018-01-02T03:04:05", "region": "us-east", + "cluster": "us-east-1", "size": 0, "objects": 0}' headers: Access-Control-Allow-Credentials: - "true" @@ -29,15 +29,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "176" + - "197" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:36 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -52,7 +56,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -80,13 +84,17 @@ interactions: Access-Control-Allow-Origin: - '*' Cache-Control: - - private, max-age=0, s-maxage=0, no-cache, no-store + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "37" Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:36 GMT + Pragma: + - no-cache Vary: - Authorization, X-Filter X-Accepted-Oauth-Scopes: @@ -96,7 +104,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" status: 404 Not Found code: 404 duration: "" @@ -126,15 +134,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "2" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:38 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -149,7 +161,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK diff --git a/test/integration/fixtures/TestObjectStorageBucketsInCluster_List.yaml b/test/integration/fixtures/TestObjectStorageBucketsInCluster_List.yaml index eae8659d9..20dfdc732 100644 --- a/test/integration/fixtures/TestObjectStorageBucketsInCluster_List.yaml +++ b/test/integration/fixtures/TestObjectStorageBucketsInCluster_List.yaml @@ -15,8 +15,8 @@ interactions: method: POST response: body: '{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", "label": - "go-bucket-test-def", "created": "2018-01-02T03:04:05", "cluster": "us-east-1", - "size": 0, "objects": 0}' + "go-bucket-test-def", "created": "2018-01-02T03:04:05", "region": "us-east", + "cluster": "us-east-1", "size": 0, "objects": 0}' headers: Access-Control-Allow-Credentials: - "true" @@ -29,15 +29,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "176" + - "197" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:03 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -52,7 +56,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -68,12 +72,13 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/object-storage/buckets/us-east-1 + url: https://api.linode.com/v4beta/object-storage/buckets/us-east-1?page=1 method: GET response: - body: '{"page": 1, "pages": 1, "results": 1, "data": [{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", - "label": "go-bucket-test-def", "created": "2018-01-02T03:04:05", "cluster": - "us-east-1", "size": 0, "objects": 0}]}' + body: '{"data": [{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", + "label": "go-bucket-test-def", "created": "2018-01-02T03:04:05", "region": "us-east", + "cluster": "us-east-1", "size": 0, "objects": 0}], "page": 1, "pages": 1, "results": + 1}' headers: Access-Control-Allow-Credentials: - "true" @@ -86,16 +91,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=0, s-maxage=0, no-cache, no-store - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "225" + - "246" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:04 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -111,7 +119,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -143,15 +151,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "2" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:06 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -166,7 +178,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK diff --git a/test/integration/fixtures/TestObjectStorageBuckets_List.yaml b/test/integration/fixtures/TestObjectStorageBuckets_List.yaml index ad85b9302..7a2f035af 100644 --- a/test/integration/fixtures/TestObjectStorageBuckets_List.yaml +++ b/test/integration/fixtures/TestObjectStorageBuckets_List.yaml @@ -15,8 +15,8 @@ interactions: method: POST response: body: '{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", "label": - "go-bucket-test-def", "created": "2018-01-02T03:04:05", "cluster": "us-east-1", - "size": 0, "objects": 0}' + "go-bucket-test-def", "created": "2018-01-02T03:04:05", "region": "us-east", + "cluster": "us-east-1", "size": 0, "objects": 0}' headers: Access-Control-Allow-Credentials: - "true" @@ -29,15 +29,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "176" + - "197" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:45 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -52,7 +56,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -68,12 +72,13 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/object-storage/buckets + url: https://api.linode.com/v4beta/object-storage/buckets?page=1 method: GET response: - body: '{"page": 1, "pages": 1, "results": 1, "data": [{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", - "label": "go-bucket-test-def", "created": "2018-01-02T03:04:05", "cluster": - "us-east-1", "size": 0, "objects": 0}]}' + body: '{"data": [{"hostname": "go-bucket-test-def.us-east-1.linodeobjects.com", + "label": "go-bucket-test-def", "created": "2018-01-02T03:04:05", "region": "us-east", + "cluster": "us-east-1", "size": 0, "objects": 0}], "page": 1, "pages": 1, "results": + 1}' headers: Access-Control-Allow-Credentials: - "true" @@ -86,16 +91,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=0, s-maxage=0, no-cache, no-store - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - - "225" + - "246" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:13:59 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -111,7 +119,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK @@ -143,15 +151,19 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=60, s-maxage=60 + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Length: - "2" Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:01 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: @@ -166,7 +178,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK diff --git a/test/integration/fixtures/TestObjectStorageClusters_List.yaml b/test/integration/fixtures/TestObjectStorageClusters_List.yaml index 363283d4a..9b221313b 100644 --- a/test/integration/fixtures/TestObjectStorageClusters_List.yaml +++ b/test/integration/fixtures/TestObjectStorageClusters_List.yaml @@ -11,7 +11,7 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/object-storage/clusters + url: https://api.linode.com/v4beta/object-storage/clusters?page=1 method: GET response: body: '{"data": [{"id": "us-east-1", "region": "us-east", "status": "available", @@ -21,8 +21,36 @@ interactions: {"id": "ap-south-1", "region": "ap-south", "status": "available", "domain": "ap-south-1.linodeobjects.com", "static_site_domain": "website-ap-south-1.linodeobjects.com"}, {"id": "us-southeast-1", "region": "us-southeast", "status": "available", "domain": - "us-southeast-1.linodeobjects.com", "static_site_domain": "website-us-southeast-1.linodeobjects.com"}], - "page": 1, "pages": 1, "results": 4}' + "us-southeast-1.linodeobjects.com", "static_site_domain": "website-us-southeast-1.linodeobjects.com"}, + {"id": "us-iad-1", "region": "us-iad", "status": "available", "domain": "us-iad-1.linodeobjects.com", + "static_site_domain": "website-us-iad-1.linodeobjects.com"}, {"id": "fr-par-1", + "region": "fr-par", "status": "available", "domain": "fr-par-1.linodeobjects.com", + "static_site_domain": "website-fr-par-1.linodeobjects.com"}, {"id": "us-ord-1", + "region": "us-ord", "status": "available", "domain": "us-ord-1.linodeobjects.com", + "static_site_domain": "website-us-ord-1.linodeobjects.com"}, {"id": "in-maa-1", + "region": "in-maa", "status": "available", "domain": "in-maa-1.linodeobjects.com", + "static_site_domain": "website-in-maa-1.linodeobjects.com"}, {"id": "se-sto-1", + "region": "se-sto", "status": "available", "domain": "se-sto-1.linodeobjects.com", + "static_site_domain": "website-se-sto-1.linodeobjects.com"}, {"id": "it-mil-1", + "region": "it-mil", "status": "available", "domain": "it-mil-1.linodeobjects.com", + "static_site_domain": "website-it-mil-1.linodeobjects.com"}, {"id": "us-sea-1", + "region": "us-sea", "status": "available", "domain": "us-sea-1.linodeobjects.com", + "static_site_domain": "website-us-sea-1.linodeobjects.com"}, {"id": "id-cgk-1", + "region": "id-cgk", "status": "available", "domain": "id-cgk-1.linodeobjects.com", + "static_site_domain": "website-id-cgk-1.linodeobjects.com"}, {"id": "jp-osa-1", + "region": "jp-osa", "status": "available", "domain": "jp-osa-1.linodeobjects.com", + "static_site_domain": "website-jp-osa-1.linodeobjects.com"}, {"id": "br-gru-1", + "region": "br-gru", "status": "available", "domain": "br-gru-1.linodeobjects.com", + "static_site_domain": "website-br-gru-1.linodeobjects.com"}, {"id": "us-lax-1", + "region": "us-lax", "status": "available", "domain": "us-lax-1.linodeobjects.com", + "static_site_domain": "website-us-lax-1.linodeobjects.com"}, {"id": "nl-ams-1", + "region": "nl-ams", "status": "available", "domain": "nl-ams-1.linodeobjects.com", + "static_site_domain": "website-nl-ams-1.linodeobjects.com"}, {"id": "us-mia-1", + "region": "us-mia", "status": "available", "domain": "us-mia-1.linodeobjects.com", + "static_site_domain": "website-us-mia-1.linodeobjects.com"}, {"id": "es-mad-1", + "region": "es-mad", "status": "available", "domain": "es-mad-1.linodeobjects.com", + "static_site_domain": "website-es-mad-1.linodeobjects.com"}], "page": 1, "pages": + 1, "results": 18}' headers: Access-Control-Allow-Credentials: - "true" @@ -35,21 +63,23 @@ interactions: Access-Control-Expose-Headers: - X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Status Cache-Control: - - private, max-age=0, s-maxage=0, no-cache, no-store - - private, max-age=60, s-maxage=60 - Content-Length: - - "751" + - max-age=0, no-cache, no-store + Connection: + - keep-alive Content-Security-Policy: - default-src 'none' Content-Type: - application/json - Server: - - nginx + Expires: + - Mon, 08 Jul 2024 15:14:20 GMT + Pragma: + - no-cache Strict-Transport-Security: - max-age=31536000 Vary: - Authorization, X-Filter - Authorization, X-Filter + - Accept-Encoding X-Accepted-Oauth-Scopes: - object_storage:read_only X-Content-Type-Options: @@ -60,7 +90,7 @@ interactions: X-Oauth-Scopes: - '*' X-Ratelimit-Limit: - - "800" + - "400" X-Xss-Protection: - 1; mode=block status: 200 OK