google-cloud-storage 1.45.0 → 1.47.0

Sign up to get free protection for your applications and to get access to all the features.
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