google-cloud-storage 1.45.0 → 1.47.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: 1a00be88dfffe243057e1ffe70891fabb483caadc76a7a37e8b82dcdb5f95395
4
- data.tar.gz: 2190d664457e1419b26b95266d8911728a612647d404790b35f37586dfe59e02
3
+ metadata.gz: fb6046c8eb979e1cbd733518d8fd242e1332813d6241f85e65b07f6d7d9e631f
4
+ data.tar.gz: 1124d71be6c1954b38f3fb6c8c3814891d9dd108fc0862f2c5436db18c111782
5
5
  SHA512:
6
- metadata.gz: e5b129dba88921e6aeec6476d60bb17ee603f0cb641194bbeb09531aff568c2290e17ab3f0f290d87976a0b0f35d4f10674dab8fea6deef70d424738a4ce767c
7
- data.tar.gz: 87e4411cda889bb7bdbf0ccddc2a343ae475614c5cab19d8461bcd646ac78016b6be35975255e14c1af1efcd3c5087c9b769b674260a82f936ef4c0456566a19
6
+ metadata.gz: 2e8598d2cf01a52f20c7bd554b593d7049134a367f17571721e2779a0634013452ad42025c22d59f8542c030a411092c3f2f63edfe8489fee0a9dcb9ccb5c774
7
+ data.tar.gz: 4918a472cd83aab2c7d1a5ffe6be9957c0113686a00769f082522799fd9cc713c3315de8d8b2d87caa22b37d7d54c2c82702fb2b5b9e1ed30ef011319dc841cf
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Release History
2
2
 
3
+ ### 1.47.0 (2024-01-09)
4
+
5
+ #### Features
6
+
7
+ * support for object lock / retention ([#23732](https://github.com/googleapis/google-cloud-ruby/issues/23732))
8
+
9
+ ### 1.46.0 (2024-01-08)
10
+
11
+ #### Features
12
+
13
+ * support match_glob for Object.list
14
+
3
15
  ### 1.45.0 (2023-11-06)
4
16
 
5
17
  #### Features
@@ -118,6 +118,15 @@ module Google
118
118
  @gapi.autoclass
119
119
  end
120
120
 
121
+ ##
122
+ # The object retention configuration of the bucket
123
+ #
124
+ # @return [Google::Apis::StorageV1::Bucket::ObjectRetention]
125
+ #
126
+ def object_retention
127
+ @gapi.object_retention
128
+ end
129
+
121
130
  ##
122
131
  # The name of the bucket.
123
132
  #
@@ -1299,6 +1308,9 @@ module Google
1299
1308
  # `prefixes` are omitted.
1300
1309
  # @param [String] token A previously-returned page token representing
1301
1310
  # part of the larger set of results to view.
1311
+ # @param [String] match_glob A glob pattern used to filter results returned in items (e.g. `foo*bar`).
1312
+ # The string value must be UTF-8 encoded. See:
1313
+ # https://cloud.google.com/storage/docs/json_api/v1/objects/list#list-object-glob
1302
1314
  # @param [Integer] max Maximum number of items plus prefixes to return.
1303
1315
  # As duplicate prefixes are omitted, fewer total results may be
1304
1316
  # returned than requested. The default value of this parameter is
@@ -1334,14 +1346,17 @@ module Google
1334
1346
  # end
1335
1347
  #
1336
1348
  def files prefix: nil, delimiter: nil, token: nil, max: nil,
1337
- versions: nil
1349
+ versions: nil, match_glob: nil
1338
1350
  ensure_service!
1339
1351
  gapi = service.list_files name, prefix: prefix, delimiter: delimiter,
1340
1352
  token: token, max: max,
1341
1353
  versions: versions,
1342
- user_project: user_project
1354
+ user_project: user_project,
1355
+ match_glob: match_glob
1343
1356
  File::List.from_gapi gapi, service, name, prefix, delimiter, max,
1344
- versions, user_project: user_project
1357
+ versions,
1358
+ user_project: user_project,
1359
+ match_glob: match_glob
1345
1360
  end
1346
1361
  alias find_files files
1347
1362
 
@@ -83,10 +83,12 @@ module Google
83
83
  token: @token,
84
84
  max: @max,
85
85
  versions: @versions,
86
- user_project: @user_project
86
+ user_project: @user_project,
87
+ match_glob: @match_glob
87
88
  File::List.from_gapi gapi, @service, @bucket, @prefix,
88
89
  @delimiter, @max, @versions,
89
- user_project: @user_project
90
+ user_project: @user_project,
91
+ match_glob: @match_glob
90
92
  end
91
93
 
92
94
  ##
@@ -163,7 +165,8 @@ module Google
163
165
  # Google::Apis::StorageV1::Objects object.
164
166
  def self.from_gapi gapi_list, service, bucket = nil, prefix = nil,
165
167
  delimiter = nil, max = nil, versions = nil,
166
- user_project: nil
168
+ user_project: nil,
169
+ match_glob: nil
167
170
  files = new(Array(gapi_list.items).map do |gapi_object|
168
171
  File.from_gapi gapi_object, service, user_project: user_project
169
172
  end)
@@ -176,6 +179,7 @@ module Google
176
179
  files.instance_variable_set :@max, max
177
180
  files.instance_variable_set :@versions, versions
178
181
  files.instance_variable_set :@user_project, user_project
182
+ files.instance_variable_set :@match_glob, match_glob
179
183
  files
180
184
  end
181
185
 
@@ -825,6 +825,9 @@ module Google
825
825
  # @param [Integer] if_metageneration_not_match Makes the operation
826
826
  # conditional on whether the file's current metageneration does not
827
827
  # match the given value.
828
+ # @param [Boolean] override_unlocked_retention
829
+ # Must be true to remove the retention configuration, reduce its unlocked
830
+ # retention period, or change its mode from unlocked to locked.
828
831
  #
829
832
  # @yield [file] a block yielding a delegate object for updating the file
830
833
  #
@@ -865,7 +868,8 @@ module Google
865
868
  if_generation_match: nil,
866
869
  if_generation_not_match: nil,
867
870
  if_metageneration_match: nil,
868
- if_metageneration_not_match: nil
871
+ if_metageneration_not_match: nil,
872
+ override_unlocked_retention: nil
869
873
  updater = Updater.new gapi
870
874
  yield updater
871
875
  updater.check_for_changed_metadata!
@@ -875,7 +879,8 @@ module Google
875
879
  if_generation_match: if_generation_match,
876
880
  if_generation_not_match: if_generation_not_match,
877
881
  if_metageneration_match: if_metageneration_match,
878
- if_metageneration_not_match: if_metageneration_not_match
882
+ if_metageneration_not_match: if_metageneration_not_match,
883
+ override_unlocked_retention: override_unlocked_retention
879
884
  end
880
885
 
881
886
  ##
@@ -1560,6 +1565,64 @@ module Google
1560
1565
  true
1561
1566
  end
1562
1567
 
1568
+ # Mode of object level retention configuration.
1569
+ # Valid values are 'Locked' or 'Unlocked'
1570
+ #
1571
+ # @return [String]
1572
+ def retention_mode
1573
+ @gapi.retention&.mode
1574
+ end
1575
+
1576
+ # The earliest time in RFC 3339 UTC "Zulu" format that the object can
1577
+ # be deleted or replaced.
1578
+ #
1579
+ # @return [DateTime]
1580
+ def retention_retain_until_time
1581
+ @gapi.retention&.retain_until_time
1582
+ end
1583
+
1584
+ # A collection of object level retention parameters.
1585
+ # The full list of available options are outlined at the [JSON API docs]
1586
+ # (https://cloud.google.com/storage/docs/json_api/v1/objects/insert#request-body).
1587
+ #
1588
+ # @return [Google::Apis::StorageV1::Object::Retention]
1589
+ def retention
1590
+ @gapi.retention
1591
+ end
1592
+
1593
+ ##
1594
+ # Update method to update retention parameter of an object / file
1595
+ # It accepts params as a Hash of attributes in the following format:
1596
+ #
1597
+ # { mode: 'Locked|Unlocked', retain_until_time: '2023-12-19T03:22:23+00:00' }
1598
+ #
1599
+ # @param [Hash(String => String)] new_retention_attributes
1600
+ #
1601
+ # @example Update retention parameters for the File / Object
1602
+ # require "google/cloud/storage"
1603
+ # storage = Google::Cloud::Storage.new
1604
+ # bucket = storage.bucket "my-bucket"
1605
+ # file = bucket.file "avatars/heidi/400x400.png"
1606
+ # retention_params = { mode: 'Unlocked', retain_until_time: '2023-12-19T03:22:23+00:00'.to_datetime }
1607
+ # file.retention = retention_params
1608
+ #
1609
+ # @example Update retention parameters for the File / Object with override enabled
1610
+ # require "google/cloud/storage"
1611
+ # storage = Google::Cloud::Storage.new
1612
+ # bucket = storage.bucket "my-bucket"
1613
+ # file = bucket.file "avatars/heidi/400x400.png"
1614
+ # retention_params = { mode: 'Unlocked',
1615
+ # retain_until_time: '2023-12-19T03:22:23+00:00'.to_datetime,
1616
+ # override_unlocked_retention: true }
1617
+ # file.retention = retention_params
1618
+ #
1619
+ def retention= new_retention_attributes
1620
+ @gapi.retention ||= Google::Apis::StorageV1::Object::Retention.new
1621
+ @gapi.retention.mode = new_retention_attributes[:mode]
1622
+ @gapi.retention.retain_until_time = new_retention_attributes[:retain_until_time]
1623
+ update_gapi! :retention, override_unlocked_retention: new_retention_attributes[:override_unlocked_retention]
1624
+ end
1625
+
1563
1626
  ##
1564
1627
  # Public URL to access the file. If the file is not public, requests to
1565
1628
  # the URL will return an error. (See {File::Acl#public!} and
@@ -2015,7 +2078,8 @@ module Google
2015
2078
  if_generation_match: nil,
2016
2079
  if_generation_not_match: nil,
2017
2080
  if_metageneration_match: nil,
2018
- if_metageneration_not_match: nil
2081
+ if_metageneration_not_match: nil,
2082
+ override_unlocked_retention: nil
2019
2083
  attributes = Array(attributes)
2020
2084
  attributes.flatten!
2021
2085
  return if attributes.empty?
@@ -2044,7 +2108,8 @@ module Google
2044
2108
  if_generation_not_match: if_generation_not_match,
2045
2109
  if_metageneration_match: if_metageneration_match,
2046
2110
  if_metageneration_not_match: if_metageneration_not_match,
2047
- user_project: user_project
2111
+ user_project: user_project,
2112
+ override_unlocked_retention: override_unlocked_retention
2048
2113
  end
2049
2114
  end
2050
2115
 
@@ -372,6 +372,8 @@ module Google
372
372
  # bucket instance and its files.
373
373
  #
374
374
  # See also {Bucket#requester_pays=} and {Bucket#requester_pays}.
375
+ # @param [Boolean] enable_object_retention
376
+ # When set to true, object retention is enabled for this bucket.
375
377
  #
376
378
  # @yield [bucket] a block for configuring the bucket before it is
377
379
  # created
@@ -386,6 +388,13 @@ module Google
386
388
  #
387
389
  # bucket = storage.create_bucket "my-bucket"
388
390
  #
391
+ # @example
392
+ # require "google/cloud/storage"
393
+ #
394
+ # storage = Google::Cloud::Storage.new
395
+ #
396
+ # bucket = storage.create_bucket "my-bucket", enable_object_retention: true
397
+ #
389
398
  # @example Configure the bucket in a block:
390
399
  # require "google/cloud/storage"
391
400
  #
@@ -416,7 +425,8 @@ module Google
416
425
  versioning: nil,
417
426
  requester_pays: nil,
418
427
  user_project: nil,
419
- autoclass_enabled: false
428
+ autoclass_enabled: false,
429
+ enable_object_retention: nil
420
430
  params = {
421
431
  name: bucket_name,
422
432
  location: location,
@@ -440,7 +450,8 @@ module Google
440
450
  updater.check_for_mutable_lifecycle!
441
451
  gapi = service.insert_bucket \
442
452
  new_bucket, acl: acl_rule(acl), default_acl: acl_rule(default_acl),
443
- user_project: user_project
453
+ user_project: user_project,
454
+ enable_object_retention: enable_object_retention
444
455
  Bucket.from_gapi gapi, service, user_project: user_project
445
456
  end
446
457
 
@@ -112,14 +112,16 @@ module Google
112
112
  # Creates a new bucket.
113
113
  # Returns Google::Apis::StorageV1::Bucket.
114
114
  def insert_bucket bucket_gapi, acl: nil, default_acl: nil,
115
- user_project: nil, options: {}
115
+ user_project: nil, enable_object_retention: nil,
116
+ options: {}
116
117
  execute do
117
118
  service.insert_bucket \
118
119
  @project, bucket_gapi,
119
120
  predefined_acl: acl,
120
121
  predefined_default_object_acl: default_acl,
121
122
  user_project: user_project(user_project),
122
- options: options
123
+ options: options,
124
+ enable_object_retention: enable_object_retention
123
125
  end
124
126
  end
125
127
 
@@ -349,6 +351,7 @@ module Google
349
351
  # Retrieves a list of files matching the criteria.
350
352
  def list_files bucket_name, delimiter: nil, max: nil, token: nil,
351
353
  prefix: nil, versions: nil, user_project: nil,
354
+ match_glob: nil,
352
355
  options: {}
353
356
  execute do
354
357
  service.list_objects \
@@ -356,6 +359,7 @@ module Google
356
359
  page_token: token, prefix: prefix,
357
360
  versions: versions,
358
361
  user_project: user_project(user_project),
362
+ match_glob: match_glob,
359
363
  options: options
360
364
  end
361
365
  end
@@ -580,6 +584,7 @@ module Google
580
584
  if_metageneration_not_match: nil,
581
585
  predefined_acl: nil,
582
586
  user_project: nil,
587
+ override_unlocked_retention: nil,
583
588
  options: {}
584
589
  file_gapi ||= Google::Apis::StorageV1::Object.new
585
590
 
@@ -599,6 +604,7 @@ module Google
599
604
  if_metageneration_not_match: if_metageneration_not_match,
600
605
  predefined_acl: predefined_acl,
601
606
  user_project: user_project(user_project),
607
+ override_unlocked_retention: override_unlocked_retention,
602
608
  options: options
603
609
  end
604
610
  end
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Storage
19
- VERSION = "1.45.0".freeze
19
+ VERSION = "1.47.0".freeze
20
20
  end
21
21
  end
22
22
  end
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.45.0
4
+ version: 1.47.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: 2023-11-06 00:00:00.000000000 Z
12
+ date: 2024-01-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-cloud-core
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 0.29.0
48
+ version: 0.31.0
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 0.29.0
55
+ version: 0.31.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: googleauth
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -325,14 +325,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
325
325
  requirements:
326
326
  - - ">="
327
327
  - !ruby/object:Gem::Version
328
- version: '2.5'
328
+ version: '2.7'
329
329
  required_rubygems_version: !ruby/object:Gem::Requirement
330
330
  requirements:
331
331
  - - ">="
332
332
  - !ruby/object:Gem::Version
333
333
  version: '0'
334
334
  requirements: []
335
- rubygems_version: 3.4.19
335
+ rubygems_version: 3.5.3
336
336
  signing_key:
337
337
  specification_version: 4
338
338
  summary: API Client library for Google Cloud Storage