google-cloud-storage 1.49.0 → 1.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e0893d52c3f3ee58e75361a0b79d172a04d37f1bc95295124a2e494b1a17a7a
|
4
|
+
data.tar.gz: e1ba0496153f4317461324fdfc2bc15de917616abf5eb844659e1fbc55c6c084
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad283cf07a70951aeb8f9e842d7dd20d2f3ef716f3bb4df8fbade6f1ab3f08cf052897176b10cf1c72d6925fae86ae688c214368da44b434ab3e76dd1a4420c8
|
7
|
+
data.tar.gz: 3067805b0d16ded711bd4cc2913cbefa290466b1d25bec4b7adb93f7d81a3d64db93b70cf165b8c1089de12460d772c112b61fd3e988b58d79278ed92bf053f4
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 1.50.0 (2024-04-19)
|
4
|
+
|
5
|
+
#### Features
|
6
|
+
|
7
|
+
* Add support for soft deletion ([#25340](https://github.com/googleapis/google-cloud-ruby/issues/25340))
|
8
|
+
#### Bug Fixes
|
9
|
+
|
10
|
+
* Set configured univer_domain and endpoint when initializing through Service ([#25665](https://github.com/googleapis/google-cloud-ruby/issues/25665))
|
11
|
+
|
3
12
|
### 1.49.0 (2024-02-21)
|
4
13
|
|
5
14
|
#### Features
|
@@ -1194,6 +1194,65 @@ module Google
|
|
1194
1194
|
patch_gapi! :rpo
|
1195
1195
|
end
|
1196
1196
|
|
1197
|
+
##
|
1198
|
+
# The bucket's soft delete policy. If this policy is set, any deleted
|
1199
|
+
# objects will be soft-deleted according to the time specified in the
|
1200
|
+
# policy.
|
1201
|
+
# This value can be modified by calling {#soft_delete_policy=}.
|
1202
|
+
#
|
1203
|
+
# @return [Google::Apis::StorageV1::Bucket::SoftDeletePolicy] The default retention policy is for 7
|
1204
|
+
# days.
|
1205
|
+
#
|
1206
|
+
# @example
|
1207
|
+
# require "google/cloud/storage"
|
1208
|
+
#
|
1209
|
+
# storage = Google::Cloud::Storage.new
|
1210
|
+
#
|
1211
|
+
# bucket = storage.bucket "my-bucket"
|
1212
|
+
#
|
1213
|
+
# bucket.soft_delete_policy
|
1214
|
+
#
|
1215
|
+
def soft_delete_policy
|
1216
|
+
@gapi.soft_delete_policy
|
1217
|
+
end
|
1218
|
+
|
1219
|
+
##
|
1220
|
+
# Sets the value for Soft Delete Policy in the bucket. This value can
|
1221
|
+
# be queried by calling {#soft_delete_policy}.
|
1222
|
+
#
|
1223
|
+
# @param [Google::Apis::StorageV1::Bucket::SoftDeletePolicy,
|
1224
|
+
# Hash(String => String)] new_soft_delete_policy The bucket's
|
1225
|
+
# new Soft Delete Policy.
|
1226
|
+
#
|
1227
|
+
# @example Set Soft Delete Policy to 10 days using SoftDeletePolicy class:
|
1228
|
+
# require "google/cloud/storage"
|
1229
|
+
# require "date"
|
1230
|
+
#
|
1231
|
+
# storage = Google::Cloud::Storage.new
|
1232
|
+
#
|
1233
|
+
# bucket = storage.bucket "my-bucket"
|
1234
|
+
#
|
1235
|
+
# soft_delete_policy = Google::Apis::StorageV1::Bucket::SoftDeletePolicy.new
|
1236
|
+
# soft_delete_policy.retention_duration_seconds = 10*24*60*60
|
1237
|
+
#
|
1238
|
+
# bucket.soft_delete_policy = soft_delete_policy
|
1239
|
+
#
|
1240
|
+
# @example Set Soft Delete Policy to 5 days using Hash:
|
1241
|
+
# require "google/cloud/storage"
|
1242
|
+
# require "date"
|
1243
|
+
#
|
1244
|
+
# storage = Google::Cloud::Storage.new
|
1245
|
+
#
|
1246
|
+
# bucket = storage.bucket "my-bucket"
|
1247
|
+
#
|
1248
|
+
# soft_delete_policy = { retention_duration_seconds: 432000 }
|
1249
|
+
# bucket.soft_delete_policy = soft_delete_policy
|
1250
|
+
#
|
1251
|
+
def soft_delete_policy= new_soft_delete_policy
|
1252
|
+
@gapi.soft_delete_policy = new_soft_delete_policy || {}
|
1253
|
+
patch_gapi! :soft_delete_policy
|
1254
|
+
end
|
1255
|
+
|
1197
1256
|
##
|
1198
1257
|
# Updates the bucket with changes made in the given block in a single
|
1199
1258
|
# PATCH request. The following attributes may be set: {#cors},
|
@@ -1322,6 +1381,8 @@ module Google
|
|
1322
1381
|
# @param [Boolean] include_folders_as_prefixes If `true`, will also include
|
1323
1382
|
# folders and managed folders, besides objects, in the returned prefixes.
|
1324
1383
|
# Only applicable if delimiter is set to '/'.
|
1384
|
+
# @param [Boolean] soft_deleted If true, only soft-deleted object
|
1385
|
+
# versions will be listed. The default is false.
|
1325
1386
|
#
|
1326
1387
|
# @return [Array<Google::Cloud::Storage::File>] (See
|
1327
1388
|
# {Google::Cloud::Storage::File::List})
|
@@ -1349,19 +1410,22 @@ module Google
|
|
1349
1410
|
# end
|
1350
1411
|
#
|
1351
1412
|
def files prefix: nil, delimiter: nil, token: nil, max: nil,
|
1352
|
-
versions: nil, match_glob: nil, include_folders_as_prefixes: nil
|
1413
|
+
versions: nil, match_glob: nil, include_folders_as_prefixes: nil,
|
1414
|
+
soft_deleted: nil
|
1353
1415
|
ensure_service!
|
1354
1416
|
gapi = service.list_files name, prefix: prefix, delimiter: delimiter,
|
1355
1417
|
token: token, max: max,
|
1356
1418
|
versions: versions,
|
1357
1419
|
user_project: user_project,
|
1358
1420
|
match_glob: match_glob,
|
1359
|
-
include_folders_as_prefixes: include_folders_as_prefixes
|
1421
|
+
include_folders_as_prefixes: include_folders_as_prefixes,
|
1422
|
+
soft_deleted: soft_deleted
|
1360
1423
|
File::List.from_gapi gapi, service, name, prefix, delimiter, max,
|
1361
1424
|
versions,
|
1362
1425
|
user_project: user_project,
|
1363
1426
|
match_glob: match_glob,
|
1364
|
-
include_folders_as_prefixes: include_folders_as_prefixes
|
1427
|
+
include_folders_as_prefixes: include_folders_as_prefixes,
|
1428
|
+
soft_deleted: soft_deleted
|
1365
1429
|
end
|
1366
1430
|
alias find_files files
|
1367
1431
|
|
@@ -1397,6 +1461,8 @@ module Google
|
|
1397
1461
|
# @param [String] encryption_key Optional. The customer-supplied,
|
1398
1462
|
# AES-256 encryption key used to encrypt the file, if one was provided
|
1399
1463
|
# to {#create_file}. (Not used if `skip_lookup` is also set.)
|
1464
|
+
# @param [Boolean] soft_deleted Optional. If true, only soft-deleted
|
1465
|
+
# object versions will be listed. The default is false.
|
1400
1466
|
#
|
1401
1467
|
# @return [Google::Cloud::Storage::File, nil] Returns nil if file does
|
1402
1468
|
# not exist
|
@@ -1418,7 +1484,8 @@ module Google
|
|
1418
1484
|
if_metageneration_match: nil,
|
1419
1485
|
if_metageneration_not_match: nil,
|
1420
1486
|
skip_lookup: nil,
|
1421
|
-
encryption_key: nil
|
1487
|
+
encryption_key: nil,
|
1488
|
+
soft_deleted: nil
|
1422
1489
|
ensure_service!
|
1423
1490
|
if skip_lookup
|
1424
1491
|
return File.new_lazy name, path, service,
|
@@ -1431,7 +1498,8 @@ module Google
|
|
1431
1498
|
if_metageneration_match: if_metageneration_match,
|
1432
1499
|
if_metageneration_not_match: if_metageneration_not_match,
|
1433
1500
|
key: encryption_key,
|
1434
|
-
user_project: user_project
|
1501
|
+
user_project: user_project,
|
1502
|
+
soft_deleted: soft_deleted
|
1435
1503
|
File.from_gapi gapi, service, user_project: user_project
|
1436
1504
|
rescue Google::Cloud::NotFoundError
|
1437
1505
|
nil
|
@@ -1712,6 +1780,77 @@ module Google
|
|
1712
1780
|
alias upload_file create_file
|
1713
1781
|
alias new_file create_file
|
1714
1782
|
|
1783
|
+
##
|
1784
|
+
# Restores a soft-deleted object.
|
1785
|
+
#
|
1786
|
+
# @param [String] file_path
|
1787
|
+
# Name of the file.
|
1788
|
+
# @param [Fixnum] generation
|
1789
|
+
# Selects a specific revision of this object.
|
1790
|
+
# @param [Boolean] copy_source_acl
|
1791
|
+
# If true, copies the source file's ACL; otherwise, uses the
|
1792
|
+
# bucket's default file ACL. The default is false.
|
1793
|
+
# @param [Fixnum] if_generation_match
|
1794
|
+
# Makes the operation conditional on whether the file's one live
|
1795
|
+
# generation matches the given value. Setting to 0 makes the
|
1796
|
+
# operation succeed only if there are no live versions of the file.
|
1797
|
+
# @param [Fixnum] if_generation_not_match
|
1798
|
+
# Makes the operation conditional on whether none of the file's live
|
1799
|
+
# generations match the given value. If no live file exists, the
|
1800
|
+
# precondition fails. Setting to 0 makes the operation succeed only
|
1801
|
+
# if there is a live version of the file.
|
1802
|
+
# @param [Fixnum] if_metageneration_match
|
1803
|
+
# Makes the operation conditional on whether the file's one live
|
1804
|
+
# metageneration matches the given value.
|
1805
|
+
# @param [Fixnum] if_metageneration_not_match
|
1806
|
+
# Makes the operation conditional on whether none of the object's
|
1807
|
+
# live metagenerations match the given value.
|
1808
|
+
# @param [String] projection
|
1809
|
+
# Set of properties to return. Defaults to full.
|
1810
|
+
# @param [String] user_project
|
1811
|
+
# The project to be billed for this request. Required for Requester
|
1812
|
+
# Pays buckets.
|
1813
|
+
# @param [String] fields
|
1814
|
+
# Selector specifying which fields to include in a partial response.
|
1815
|
+
#
|
1816
|
+
# @return [Google::Cloud::Storage::File]
|
1817
|
+
#
|
1818
|
+
# @example
|
1819
|
+
# require "google/cloud/storage"
|
1820
|
+
#
|
1821
|
+
# storage = Google::Cloud::Storage.new
|
1822
|
+
#
|
1823
|
+
# bucket = storage.bucket "my-bucket"
|
1824
|
+
#
|
1825
|
+
# bucket.restore_file "path/of/file", <generation-of-the-file>
|
1826
|
+
#
|
1827
|
+
def restore_file file_path,
|
1828
|
+
generation,
|
1829
|
+
copy_source_acl: nil,
|
1830
|
+
if_generation_match: nil,
|
1831
|
+
if_generation_not_match: nil,
|
1832
|
+
if_metageneration_match: nil,
|
1833
|
+
if_metageneration_not_match: nil,
|
1834
|
+
projection: nil,
|
1835
|
+
user_project: nil,
|
1836
|
+
fields: nil,
|
1837
|
+
options: {}
|
1838
|
+
ensure_service!
|
1839
|
+
gapi = service.restore_file name,
|
1840
|
+
file_path,
|
1841
|
+
generation,
|
1842
|
+
copy_source_acl: File::Acl.predefined_rule_for(copy_source_acl),
|
1843
|
+
if_generation_match: if_generation_match,
|
1844
|
+
if_generation_not_match: if_generation_not_match,
|
1845
|
+
if_metageneration_match: if_metageneration_match,
|
1846
|
+
if_metageneration_not_match: if_metageneration_not_match,
|
1847
|
+
projection: projection,
|
1848
|
+
user_project: user_project,
|
1849
|
+
fields: fields,
|
1850
|
+
options: options
|
1851
|
+
File.from_gapi gapi, service, user_project: user_project
|
1852
|
+
end
|
1853
|
+
|
1715
1854
|
##
|
1716
1855
|
# Concatenates a list of existing files in the bucket into a new file in
|
1717
1856
|
# the bucket. There is a limit (currently 32) to the number of files
|
@@ -166,7 +166,8 @@ module Google
|
|
166
166
|
def self.from_gapi gapi_list, service, bucket = nil, prefix = nil,
|
167
167
|
delimiter = nil, max = nil, versions = nil,
|
168
168
|
user_project: nil, match_glob: nil,
|
169
|
-
include_folders_as_prefixes: nil
|
169
|
+
include_folders_as_prefixes: nil,
|
170
|
+
soft_deleted: nil
|
170
171
|
files = new(Array(gapi_list.items).map do |gapi_object|
|
171
172
|
File.from_gapi gapi_object, service, user_project: user_project
|
172
173
|
end)
|
@@ -181,6 +182,7 @@ module Google
|
|
181
182
|
files.instance_variable_set :@user_project, user_project
|
182
183
|
files.instance_variable_set :@match_glob, match_glob
|
183
184
|
files.instance_variable_set :@include_folders_as_prefixes, include_folders_as_prefixes
|
185
|
+
files.instance_variable_set :@soft_deleted, soft_deleted
|
184
186
|
files
|
185
187
|
end
|
186
188
|
|
@@ -763,6 +763,30 @@ module Google
|
|
763
763
|
@gapi.retention_expiration_time
|
764
764
|
end
|
765
765
|
|
766
|
+
##
|
767
|
+
# This soft delete time is the time when the object became
|
768
|
+
# soft-deleted.
|
769
|
+
#
|
770
|
+
# @return [DateTime, nil] A DateTime representing the time at
|
771
|
+
# which the object became soft-deleted, or `nil` if the file was
|
772
|
+
# not deleted.
|
773
|
+
#
|
774
|
+
def soft_delete_time
|
775
|
+
@gapi.soft_delete_time
|
776
|
+
end
|
777
|
+
|
778
|
+
##
|
779
|
+
# This hard delete time is The time when the file will be permanently
|
780
|
+
# deleted.
|
781
|
+
#
|
782
|
+
# @return [DateTime, nil] A DateTime representing the time at
|
783
|
+
# which the file will be permanently deleted, or `nil` if the file is
|
784
|
+
# not soft deleted.
|
785
|
+
#
|
786
|
+
def hard_delete_time
|
787
|
+
@gapi.hard_delete_time
|
788
|
+
end
|
789
|
+
|
766
790
|
##
|
767
791
|
# Retrieves a list of versioned files for the current object.
|
768
792
|
#
|
@@ -15,6 +15,7 @@
|
|
15
15
|
|
16
16
|
require "google/cloud/storage/version"
|
17
17
|
require "google/apis/storage_v1"
|
18
|
+
require "google/cloud/config"
|
18
19
|
require "digest"
|
19
20
|
require "mini_mime"
|
20
21
|
require "pathname"
|
@@ -49,6 +50,7 @@ module Google
|
|
49
50
|
send_timeout: nil, host: nil, quota_project: nil,
|
50
51
|
max_elapsed_time: nil, base_interval: nil, max_interval: nil,
|
51
52
|
multiplier: nil, upload_chunk_size: nil, universe_domain: nil
|
53
|
+
host ||= Google::Cloud::Storage.configure.endpoint
|
52
54
|
@project = project
|
53
55
|
@credentials = credentials
|
54
56
|
@service = API::StorageService.new
|
@@ -73,7 +75,7 @@ module Google
|
|
73
75
|
@service.request_options.upload_chunk_size = upload_chunk_size if upload_chunk_size
|
74
76
|
@service.authorization = @credentials.client if @credentials
|
75
77
|
@service.root_url = host if host
|
76
|
-
@service.universe_domain = universe_domain
|
78
|
+
@service.universe_domain = universe_domain || Google::Cloud::Storage.configure.universe_domain
|
77
79
|
begin
|
78
80
|
@service.verify_universe_domain!
|
79
81
|
rescue Google::Apis::UniverseDomainError => e
|
@@ -364,7 +366,7 @@ module Google
|
|
364
366
|
def list_files bucket_name, delimiter: nil, max: nil, token: nil,
|
365
367
|
prefix: nil, versions: nil, user_project: nil,
|
366
368
|
match_glob: nil, include_folders_as_prefixes: nil,
|
367
|
-
options: {}
|
369
|
+
soft_deleted: nil, options: {}
|
368
370
|
execute do
|
369
371
|
service.list_objects \
|
370
372
|
bucket_name, delimiter: delimiter, max_results: max,
|
@@ -373,6 +375,7 @@ module Google
|
|
373
375
|
user_project: user_project(user_project),
|
374
376
|
match_glob: match_glob,
|
375
377
|
include_folders_as_prefixes: include_folders_as_prefixes,
|
378
|
+
soft_deleted: soft_deleted,
|
376
379
|
options: options
|
377
380
|
end
|
378
381
|
end
|
@@ -456,6 +459,7 @@ module Google
|
|
456
459
|
if_metageneration_not_match: nil,
|
457
460
|
key: nil,
|
458
461
|
user_project: nil,
|
462
|
+
soft_deleted: nil,
|
459
463
|
options: {}
|
460
464
|
execute do
|
461
465
|
service.get_object \
|
@@ -466,6 +470,7 @@ module Google
|
|
466
470
|
if_metageneration_match: if_metageneration_match,
|
467
471
|
if_metageneration_not_match: if_metageneration_not_match,
|
468
472
|
user_project: user_project(user_project),
|
473
|
+
soft_deleted: soft_deleted,
|
469
474
|
options: key_options(key).merge(options)
|
470
475
|
end
|
471
476
|
end
|
@@ -651,6 +656,40 @@ module Google
|
|
651
656
|
end
|
652
657
|
end
|
653
658
|
|
659
|
+
##
|
660
|
+
# Restores a soft-deleted object.
|
661
|
+
def restore_file bucket_name,
|
662
|
+
file_path,
|
663
|
+
generation,
|
664
|
+
copy_source_acl: nil,
|
665
|
+
if_generation_match: nil,
|
666
|
+
if_generation_not_match: nil,
|
667
|
+
if_metageneration_match: nil,
|
668
|
+
if_metageneration_not_match: nil,
|
669
|
+
projection: nil,
|
670
|
+
user_project: nil,
|
671
|
+
fields: nil,
|
672
|
+
options: {}
|
673
|
+
|
674
|
+
if options[:retries].nil?
|
675
|
+
is_idempotent = retry? generation: generation, if_generation_match: if_generation_match
|
676
|
+
options = is_idempotent ? {} : { retries: 0 }
|
677
|
+
end
|
678
|
+
|
679
|
+
execute do
|
680
|
+
service.restore_object bucket_name, file_path, generation,
|
681
|
+
copy_source_acl: copy_source_acl,
|
682
|
+
if_generation_match: if_generation_match,
|
683
|
+
if_generation_not_match: if_generation_not_match,
|
684
|
+
if_metageneration_match: if_metageneration_match,
|
685
|
+
if_metageneration_not_match: if_metageneration_not_match,
|
686
|
+
projection: projection,
|
687
|
+
user_project: user_project(user_project),
|
688
|
+
fields: fields,
|
689
|
+
options: options
|
690
|
+
end
|
691
|
+
end
|
692
|
+
|
654
693
|
##
|
655
694
|
# Retrieves a list of ACLs for the given file.
|
656
695
|
def list_file_acls bucket_name, file_name, user_project: nil, options: {}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-storage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.50.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Moore
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-04-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|
@@ -59,14 +59,14 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '0.
|
62
|
+
version: '0.37'
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0.
|
69
|
+
version: '0.37'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: googleauth
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -340,7 +340,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
340
340
|
- !ruby/object:Gem::Version
|
341
341
|
version: '0'
|
342
342
|
requirements: []
|
343
|
-
rubygems_version: 3.5.
|
343
|
+
rubygems_version: 3.5.6
|
344
344
|
signing_key:
|
345
345
|
specification_version: 4
|
346
346
|
summary: API Client library for Google Cloud Storage
|