google-cloud-storage 1.51.0 → 1.53.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: e3669f3114435c5da604ee4cc83bd776043d7e27f58922eb20a22916a9c5035b
4
- data.tar.gz: fac7ade9b2aaffb42815c93ce0e32b23f95f984191b3704bda72fcc522f7a68e
3
+ metadata.gz: fe3e1f688d9b54f38ed678c881b0ad6b53f80d9a3f8983b23f2ea42939bb8c1d
4
+ data.tar.gz: 937a4544aa1f3497c62ec42c6c040cdc54be7eec8f8eb0a6a48825fc5adcd5c9
5
5
  SHA512:
6
- metadata.gz: 3d2a78592e25e219f3a578488ecf2f56192402a4ec17d29729230c9da6a9198f7da91b0c1f565269d0d265af988f6f66b0b855fcdde296018119c43a4c29bf53
7
- data.tar.gz: 90ca5c138c3e780001fa2f30be1b52fd3104a9160cc248a4bc88d31391a34b00d8fbb063c2e0609f72df72db7ee1769603b88500d0b6890235e3bb5e0c3a066b
6
+ metadata.gz: 4fe5213423da8b342653278f41c9d00b45cfec9ed1e3d0bc451625390149e1f826ce7dff10e6d45bfddf80558f00a13814a0572193103c964d40b68217e44f2e
7
+ data.tar.gz: c7dcb018af799f2cbae6a3909377de03dca0127c642da171348c80be1f2870ee758c7d9f49d38035eded59b664713a7675aa775373793ea132bc220bdd47cbee
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Release History
2
2
 
3
+ ### 1.53.0 (2024-12-04)
4
+
5
+ #### Features
6
+
7
+ * add integration test for universe domain ([#27384](https://github.com/googleapis/google-cloud-ruby/issues/27384))
8
+ * fetch file and bucket details from url ([#27322](https://github.com/googleapis/google-cloud-ruby/issues/27322))
9
+
10
+ ### 1.52.0 (2024-05-31)
11
+
12
+ #### Features
13
+
14
+ * support for hierarchical namespace (folders) ([#25967](https://github.com/googleapis/google-cloud-ruby/issues/25967))
15
+
3
16
  ### 1.51.0 (2024-04-25)
4
17
 
5
18
  #### Features
@@ -1253,6 +1253,62 @@ module Google
1253
1253
  patch_gapi! :soft_delete_policy
1254
1254
  end
1255
1255
 
1256
+ ##
1257
+ # The bucket's hierarchical namespace (Folders) configuration.
1258
+ # This value can be modified by calling {#hierarchical_namespace=}.
1259
+ #
1260
+ # @return [Google::Apis::StorageV1::Bucket::HierarchicalNamespace]
1261
+ #
1262
+ # @example
1263
+ # require "google/cloud/storage"
1264
+ #
1265
+ # storage = Google::Cloud::Storage.new
1266
+ #
1267
+ # bucket = storage.bucket "my-bucket"
1268
+ #
1269
+ # bucket.hierarchical_namespace
1270
+ #
1271
+ def hierarchical_namespace
1272
+ @gapi.hierarchical_namespace
1273
+ end
1274
+
1275
+ ##
1276
+ # Sets the value of Hierarchical Namespace (Folders) for the bucket.
1277
+ # This can only be enabled at bucket create time. If this is enabled,
1278
+ # Uniform Bucket-Level Access must also be enabled.
1279
+ # This value can be queried by calling {#hierarchical_namespace}.
1280
+ #
1281
+ # @param [Google::Apis::StorageV1::Bucket::HierarchicalNamespace,
1282
+ # Hash(String => String)] new_hierarchical_namespace The
1283
+ # bucket's new Hierarchical Namespace Configuration.
1284
+ #
1285
+ # @example Enabled Hierarchical Namespace using HierarchicalNamespace class:
1286
+ # require "google/cloud/storage"
1287
+ #
1288
+ # storage = Google::Cloud::Storage.new
1289
+ #
1290
+ # bucket = storage.bucket "my-bucket"
1291
+ #
1292
+ # hierarchical_namespace = Google::Apis::StorageV1::Bucket::HierarchicalNamespace.new
1293
+ # hierarchical_namespace.enabled = true
1294
+ #
1295
+ # bucket.hierarchical_namespace = hierarchical_namespace
1296
+ #
1297
+ # @example Disable Hierarchical Namespace using Hash:
1298
+ # require "google/cloud/storage"
1299
+ #
1300
+ # storage = Google::Cloud::Storage.new
1301
+ #
1302
+ # bucket = storage.bucket "my-bucket"
1303
+ #
1304
+ # hierarchical_namespace = { enabled: false }
1305
+ # bucket.hierarchical_namespace = hierarchical_namespace
1306
+ #
1307
+ def hierarchical_namespace= new_hierarchical_namespace
1308
+ @gapi.hierarchical_namespace = new_hierarchical_namespace || {}
1309
+ patch_gapi! :hierarchical_namespace
1310
+ end
1311
+
1256
1312
  ##
1257
1313
  # Updates the bucket with changes made in the given block in a single
1258
1314
  # PATCH request. The following attributes may be set: {#cors},
@@ -2081,6 +2081,50 @@ module Google
2081
2081
  Google::Apis::StorageV1::Object.new(**attr_params)
2082
2082
  end
2083
2083
 
2084
+ ##
2085
+ # from_gs_url is a method to fetch bucket details and file details from a gs url
2086
+ #
2087
+ # @return [Hash(String => String)]
2088
+ #
2089
+ # @example Fetch bucket_name and file_Path from gs url:
2090
+ # require "google/cloud/storage"
2091
+ # gs_url= "gs://my-todo-app/avatars/heidi.jpeg"
2092
+ # file=Google::Cloud::Storage::File
2093
+ # file.from_gs_url(gs_url)
2094
+ # =>
2095
+ # {"bucket_name"=>"my-todo-app", "file_path"=>"avatars/heidi.jpeg"}
2096
+ #
2097
+ # @example Fetch bucket_name , file_Path and other query params from gs url:
2098
+ # require "google/cloud/storage"
2099
+ # gs_url= "gs://my-todo-app/test_sub_folder/heidi.jpeg?params1=test1&params2=test2"
2100
+ # file=Google::Cloud::Storage::File
2101
+ # file.from_gs_url(gs_url)
2102
+ # =>{
2103
+ # "bucket_name"=>"my-todo-app",
2104
+ # "file_path"=>"test_sub_folder/heidi.jpeg",
2105
+ # "options" => {
2106
+ # "params1"=>"test1",
2107
+ # "params2"=>"test2"
2108
+ # }
2109
+ # }
2110
+
2111
+ def self.from_gs_url gs_url
2112
+ prefix = "gs://".freeze
2113
+ raise ArgumentError, "Invalid GCS URL" unless gs_url.start_with? prefix
2114
+ # seprating params from input url
2115
+ path, query = gs_url.sub(prefix, "").split("?", 2)
2116
+ # parsing the url
2117
+ bucket_name, file_path = path.split "/", 2
2118
+ query_params = URI.decode_www_form(query).to_h if query
2119
+ url_items = {
2120
+ "bucket_name" => bucket_name,
2121
+ "file_path" => file_path
2122
+ }
2123
+ # adding url params to output hash
2124
+ url_items.merge! "options" => query_params if query
2125
+ url_items
2126
+ end
2127
+
2084
2128
  protected
2085
2129
 
2086
2130
  ##
@@ -421,6 +421,7 @@ module Google
421
421
  # b.lifecycle.add_set_storage_class_rule "COLDLINE", age: 10
422
422
  # end
423
423
  #
424
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
424
425
  def create_bucket bucket_name,
425
426
  acl: nil,
426
427
  default_acl: nil,
@@ -435,11 +436,13 @@ module Google
435
436
  requester_pays: nil,
436
437
  user_project: nil,
437
438
  autoclass_enabled: false,
438
- enable_object_retention: nil
439
+ enable_object_retention: nil,
440
+ hierarchical_namespace: nil
439
441
  params = {
440
442
  name: bucket_name,
441
443
  location: location,
442
- custom_placement_config: custom_placement_config
444
+ custom_placement_config: custom_placement_config,
445
+ hierarchical_namespace: hierarchical_namespace
443
446
  }.delete_if { |_, v| v.nil? }
444
447
  new_bucket = Google::Apis::StorageV1::Bucket.new(**params)
445
448
  storage_class = storage_class_for storage_class
@@ -452,6 +455,7 @@ module Google
452
455
  b.website_404 = website_404 unless website_404.nil?
453
456
  b.versioning = versioning unless versioning.nil?
454
457
  b.requester_pays = requester_pays unless requester_pays.nil?
458
+ b.hierarchical_namespace = hierarchical_namespace unless hierarchical_namespace.nil?
455
459
  end
456
460
  yield updater if block_given?
457
461
  updater.check_for_changed_labels!
@@ -463,6 +467,7 @@ module Google
463
467
  enable_object_retention: enable_object_retention
464
468
  Bucket.from_gapi gapi, service, user_project: user_project
465
469
  end
470
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
466
471
 
467
472
  ##
468
473
  # Creates a new HMAC key.
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Storage
19
- VERSION = "1.51.0".freeze
19
+ VERSION = "1.53.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.51.0
4
+ version: 1.53.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-04-25 00:00:00.000000000 Z
12
+ date: 2024-12-04 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.37'
62
+ version: '0.38'
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.37'
69
+ version: '0.38'
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.6
343
+ rubygems_version: 3.5.22
344
344
  signing_key:
345
345
  specification_version: 4
346
346
  summary: API Client library for Google Cloud Storage