google-cloud-storage 1.6.0 → 1.7.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 +4 -4
- data/lib/google/cloud/storage.rb +1 -2
- data/lib/google/cloud/storage/bucket.rb +120 -17
- data/lib/google/cloud/storage/bucket/acl.rb +20 -26
- data/lib/google/cloud/storage/file.rb +2 -1
- data/lib/google/cloud/storage/file/acl.rb +10 -13
- data/lib/google/cloud/storage/notification.rb +2 -1
- data/lib/google/cloud/storage/project.rb +5 -4
- data/lib/google/cloud/storage/service.rb +32 -0
- data/lib/google/cloud/storage/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 234c7b1b0ea7f2033e0428c202ca6fc5a9390f68
|
4
|
+
data.tar.gz: 54912b87f802825f3d4a6a88126a20d826e382d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c813e0e7bae98753ad441d4a015ace5cab50d053821cbbcc0a64ab2fd4705f7f83707f122c225e8251816df667855098992485720c37b4ceff8dff2c55d768b
|
7
|
+
data.tar.gz: 0fde8c69671d845976c975aa67d6520d1421ff8e25ae8140625350e83bd9dd649eabd6fd31dc83aed6f0f0f6b32d3bb1456d493f67f3ea08f0e17705686dcf14
|
data/lib/google/cloud/storage.rb
CHANGED
@@ -439,8 +439,7 @@ module Google
|
|
439
439
|
#
|
440
440
|
# The requester pays feature enables the owner of a bucket to indicate that
|
441
441
|
# a client accessing the bucket or a file it contains must assume the
|
442
|
-
# transit costs related to the access.
|
443
|
-
# only to whitelisted projects.
|
442
|
+
# transit costs related to the access.
|
444
443
|
#
|
445
444
|
# Assign transit costs for bucket and file operations to requesting clients
|
446
445
|
# with the `requester_pays` flag:
|
@@ -48,23 +48,20 @@ module Google
|
|
48
48
|
attr_accessor :gapi
|
49
49
|
|
50
50
|
##
|
51
|
-
# A boolean value or a project ID string
|
52
|
-
# bucket and its files. If this
|
53
|
-
#
|
54
|
-
# project for this client. (See
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
51
|
+
# A boolean value or a project ID string to indicate the project to
|
52
|
+
# be billed for operations on the bucket and its files. If this
|
53
|
+
# attribute is set to `true`, transit costs for operations on the bucket
|
54
|
+
# will be billed to the current project for this client. (See
|
55
|
+
# {Project#project} for the ID of the current project.) If this
|
56
|
+
# attribute is set to a project ID, and that project is authorized for
|
57
|
+
# the currently authenticated service account, transit costs will be
|
58
|
+
# billed to that project. This attribute is required with requester
|
59
|
+
# pays-enabled buckets. The default is `nil`.
|
59
60
|
#
|
60
61
|
# In general, this attribute should be set when first retrieving the
|
61
62
|
# bucket by providing the `user_project` option to {Project#bucket}.
|
62
63
|
#
|
63
|
-
#
|
64
|
-
# projects.
|
65
|
-
#
|
66
|
-
# See also {#requester_pays=} and {#requester_pays} to enable requester
|
67
|
-
# pays for a bucket.
|
64
|
+
# See also {#requester_pays=} and {#requester_pays}.
|
68
65
|
#
|
69
66
|
# @example Setting a non-default project:
|
70
67
|
# require "google/cloud/storage"
|
@@ -346,8 +343,6 @@ module Google
|
|
346
343
|
# {Project#buckets} to indicate the project to which the access costs
|
347
344
|
# should be billed.
|
348
345
|
#
|
349
|
-
# This feature is currently available only to whitelisted projects.
|
350
|
-
#
|
351
346
|
# @return [Boolean, nil] Returns `true` if requester pays is enabled for
|
352
347
|
# the bucket.
|
353
348
|
#
|
@@ -363,8 +358,6 @@ module Google
|
|
363
358
|
# {Project#bucket} and {Project#buckets} to indicate the project to
|
364
359
|
# which the access costs should be billed.
|
365
360
|
#
|
366
|
-
# This feature is currently available only to whitelisted projects.
|
367
|
-
#
|
368
361
|
# @param [Boolean] new_requester_pays When set to `true`, requester pays
|
369
362
|
# is enabled for the bucket.
|
370
363
|
#
|
@@ -713,6 +706,116 @@ module Google
|
|
713
706
|
alias_method :upload_file, :create_file
|
714
707
|
alias_method :new_file, :create_file
|
715
708
|
|
709
|
+
##
|
710
|
+
# Concatenates a list of existing files in the bucket into a new file in
|
711
|
+
# the bucket. There is a limit (currently 32) to the number of files
|
712
|
+
# that can be composed in a single operation.
|
713
|
+
#
|
714
|
+
# To compose files encrypted with a customer-supplied encryption key,
|
715
|
+
# use the `encryption_key` option. All source files must have been
|
716
|
+
# encrypted with the same key, and the resulting destination file will
|
717
|
+
# also be encrypted with the same key.
|
718
|
+
#
|
719
|
+
# @param [Array<String, Google::Cloud::Storage::File>] sources The list
|
720
|
+
# of source file names or objects that will be concatenated into a
|
721
|
+
# single file.
|
722
|
+
# @param [String] destination The name of the new file.
|
723
|
+
# @param [String] acl A predefined set of access controls to apply to
|
724
|
+
# this file.
|
725
|
+
#
|
726
|
+
# Acceptable values are:
|
727
|
+
#
|
728
|
+
# * `auth`, `auth_read`, `authenticated`, `authenticated_read`,
|
729
|
+
# `authenticatedRead` - File owner gets OWNER access, and
|
730
|
+
# allAuthenticatedUsers get READER access.
|
731
|
+
# * `owner_full`, `bucketOwnerFullControl` - File owner gets OWNER
|
732
|
+
# access, and project team owners get OWNER access.
|
733
|
+
# * `owner_read`, `bucketOwnerRead` - File owner gets OWNER access,
|
734
|
+
# and project team owners get READER access.
|
735
|
+
# * `private` - File owner gets OWNER access.
|
736
|
+
# * `project_private`, `projectPrivate` - File owner gets OWNER
|
737
|
+
# access, and project team members get access according to their
|
738
|
+
# roles.
|
739
|
+
# * `public`, `public_read`, `publicRead` - File owner gets OWNER
|
740
|
+
# access, and allUsers get READER access.
|
741
|
+
#
|
742
|
+
# @param [String, nil] encryption_key Optional. The customer-supplied,
|
743
|
+
# AES-256 encryption key used to encrypt the source files, if one was
|
744
|
+
# used. All source files must have been encrypted with the same key,
|
745
|
+
# and the resulting destination file will also be encrypted with the
|
746
|
+
# key.
|
747
|
+
#
|
748
|
+
# @yield [file] A block yielding a delegate file object for setting the
|
749
|
+
# properties of the destination file.
|
750
|
+
#
|
751
|
+
# @return [Google::Cloud::Storage::File] The new file.
|
752
|
+
#
|
753
|
+
# @example
|
754
|
+
# require "google/cloud/storage"
|
755
|
+
#
|
756
|
+
# storage = Google::Cloud::Storage.new
|
757
|
+
#
|
758
|
+
# bucket = storage.bucket "my-bucket"
|
759
|
+
#
|
760
|
+
# sources = ["path/to/my-file-1.ext", "path/to/my-file-2.ext"]
|
761
|
+
#
|
762
|
+
# new_file = bucket.compose sources, "path/to/new-file.ext"
|
763
|
+
#
|
764
|
+
# @example Set the properties of the new file in a block:
|
765
|
+
# require "google/cloud/storage"
|
766
|
+
#
|
767
|
+
# storage = Google::Cloud::Storage.new
|
768
|
+
#
|
769
|
+
# bucket = storage.bucket "my-bucket"
|
770
|
+
#
|
771
|
+
# sources = ["path/to/my-file-1.ext", "path/to/my-file-2.ext"]
|
772
|
+
#
|
773
|
+
# new_file = bucket.compose sources, "path/to/new-file.ext" do |f|
|
774
|
+
# f.cache_control = "private, max-age=0, no-cache"
|
775
|
+
# f.content_disposition = "inline; filename=filename.ext"
|
776
|
+
# f.content_encoding = "deflate"
|
777
|
+
# f.content_language = "de"
|
778
|
+
# f.content_type = "application/json"
|
779
|
+
# end
|
780
|
+
#
|
781
|
+
# @example Specify the generation of source files (but skip retrieval):
|
782
|
+
# require "google/cloud/storage"
|
783
|
+
#
|
784
|
+
# storage = Google::Cloud::Storage.new
|
785
|
+
#
|
786
|
+
# bucket = storage.bucket "my-bucket"
|
787
|
+
#
|
788
|
+
# file_1 = bucket.file "path/to/my-file-1.ext",
|
789
|
+
# generation: 1490390259479000, skip_lookup: true
|
790
|
+
# file_2 = bucket.file "path/to/my-file-2.ext",
|
791
|
+
# generation: 1490310974144000, skip_lookup: true
|
792
|
+
#
|
793
|
+
# new_file = bucket.compose [file_1, file_2], "path/to/new-file.ext"
|
794
|
+
#
|
795
|
+
def compose sources, destination, acl: nil, encryption_key: nil
|
796
|
+
ensure_service!
|
797
|
+
sources = Array sources
|
798
|
+
if sources.size < 2
|
799
|
+
fail ArgumentError, "must provide at least two source files"
|
800
|
+
end
|
801
|
+
|
802
|
+
options = { acl: File::Acl.predefined_rule_for(acl),
|
803
|
+
key: encryption_key,
|
804
|
+
user_project: user_project }
|
805
|
+
destination_gapi = nil
|
806
|
+
if block_given?
|
807
|
+
destination_gapi = Google::Apis::StorageV1::Object.new
|
808
|
+
updater = File::Updater.new destination_gapi
|
809
|
+
yield updater
|
810
|
+
updater.check_for_changed_metadata!
|
811
|
+
end
|
812
|
+
gapi = service.compose_file name, sources, destination,
|
813
|
+
destination_gapi, options
|
814
|
+
File.from_gapi gapi, service
|
815
|
+
end
|
816
|
+
alias_method :compose_file, :compose
|
817
|
+
alias_method :combine, :compose
|
818
|
+
|
716
819
|
##
|
717
820
|
# Access without authentication can be granted to a File for a specified
|
718
821
|
# period of time. This URL uses a cryptographic signature of your
|
@@ -49,24 +49,21 @@ module Google
|
|
49
49
|
"public_write" => "publicReadWrite" }
|
50
50
|
|
51
51
|
##
|
52
|
-
# A boolean value or a project ID string
|
53
|
-
# bucket and its files. If this
|
54
|
-
#
|
55
|
-
# project for this client. (See
|
56
|
-
#
|
57
|
-
#
|
58
|
-
# account, transit costs will be
|
59
|
-
#
|
52
|
+
# A boolean value or a project ID string to indicate the project to
|
53
|
+
# be billed for operations on the bucket and its files. If this
|
54
|
+
# attribute is set to `true`, transit costs for operations on the
|
55
|
+
# bucket will be billed to the current project for this client. (See
|
56
|
+
# {Project#project} for the ID of the current project.) If this
|
57
|
+
# attribute is set to a project ID, and that project is authorized for
|
58
|
+
# the currently authenticated service account, transit costs will be
|
59
|
+
# billed to that project. This attribute is required with requester
|
60
|
+
# pays-enabled buckets. The default is `nil`.
|
60
61
|
#
|
61
62
|
# In general, this attribute should be set when first retrieving the
|
62
63
|
# owning bucket by providing the `user_project` option to
|
63
64
|
# {Project#bucket}.
|
64
65
|
#
|
65
|
-
#
|
66
|
-
# whitelisted projects.
|
67
|
-
#
|
68
|
-
# See also {Bucket#requester_pays=} and {Bucket#requester_pays} to
|
69
|
-
# enable requester pays for a bucket.
|
66
|
+
# See also {Bucket#requester_pays=} and {Bucket#requester_pays}.
|
70
67
|
#
|
71
68
|
attr_accessor :user_project
|
72
69
|
|
@@ -476,24 +473,21 @@ module Google
|
|
476
473
|
"public_read" => "publicRead" }
|
477
474
|
|
478
475
|
##
|
479
|
-
# A boolean value or a project ID string
|
480
|
-
# bucket and its files. If this
|
481
|
-
#
|
482
|
-
# project for this client. (See
|
483
|
-
#
|
484
|
-
#
|
485
|
-
# account, transit costs will be
|
486
|
-
#
|
476
|
+
# A boolean value or a project ID string to indicate the project to
|
477
|
+
# be billed for operations on the bucket and its files. If this
|
478
|
+
# attribute is set to `true`, transit costs for operations on the
|
479
|
+
# bucket will be billed to the current project for this client. (See
|
480
|
+
# {Project#project} for the ID of the current project.) If this
|
481
|
+
# attribute is set to a project ID, and that project is authorized for
|
482
|
+
# the currently authenticated service account, transit costs will be
|
483
|
+
# billed to that project. This attribute is required with requester
|
484
|
+
# pays-enabled buckets. The default is `nil`.
|
487
485
|
#
|
488
486
|
# In general, this attribute should be set when first retrieving the
|
489
487
|
# owning bucket by providing the `user_project` option to
|
490
488
|
# {Project#bucket}.
|
491
489
|
#
|
492
|
-
#
|
493
|
-
# whitelisted projects.
|
494
|
-
#
|
495
|
-
# See also {Bucket#requester_pays=} and {Bucket#requester_pays} to
|
496
|
-
# enable requester pays for a bucket.
|
490
|
+
# See also {Bucket#requester_pays=} and {Bucket#requester_pays}.
|
497
491
|
#
|
498
492
|
attr_accessor :user_project
|
499
493
|
|
@@ -60,7 +60,8 @@ module Google
|
|
60
60
|
# {Project#project} for the ID of the current project.) If this
|
61
61
|
# attribute is set to a project ID, and that project is authorized for
|
62
62
|
# the currently authenticated service account, transit costs will be
|
63
|
-
# billed to
|
63
|
+
# billed to that project. This attribute is required with requester
|
64
|
+
# pays-enabled buckets. The default is `nil`.
|
64
65
|
#
|
65
66
|
# In general, this attribute should be set when first retrieving the
|
66
67
|
# owning bucket by providing the `user_project` option to
|
@@ -51,24 +51,21 @@ module Google
|
|
51
51
|
"public_read" => "publicRead" }
|
52
52
|
|
53
53
|
##
|
54
|
-
# A boolean value or a project ID string
|
55
|
-
# bucket and its files. If this
|
56
|
-
#
|
57
|
-
# project for this client. (See
|
58
|
-
#
|
59
|
-
#
|
60
|
-
# account, transit costs will be
|
61
|
-
#
|
54
|
+
# A boolean value or a project ID string to indicate the project to
|
55
|
+
# be billed for operations on the bucket and its files. If this
|
56
|
+
# attribute is set to `true`, transit costs for operations on the
|
57
|
+
# bucket will be billed to the current project for this client. (See
|
58
|
+
# {Project#project} for the ID of the current project.) If this
|
59
|
+
# attribute is set to a project ID, and that project is authorized for
|
60
|
+
# the currently authenticated service account, transit costs will be
|
61
|
+
# billed to that project. This attribute is required with requester
|
62
|
+
# pays-enabled buckets. The default is `nil`.
|
62
63
|
#
|
63
64
|
# In general, this attribute should be set when first retrieving the
|
64
65
|
# owning bucket by providing the `user_project` option to
|
65
66
|
# {Project#bucket}.
|
66
67
|
#
|
67
|
-
#
|
68
|
-
# whitelisted projects.
|
69
|
-
#
|
70
|
-
# See also {Bucket#requester_pays=} and {Bucket#requester_pays} to
|
71
|
-
# enable requester pays for a bucket.
|
68
|
+
# See also {Bucket#requester_pays=} and {Bucket#requester_pays}.
|
72
69
|
#
|
73
70
|
attr_accessor :user_project
|
74
71
|
|
@@ -60,7 +60,8 @@ module Google
|
|
60
60
|
attr_accessor :gapi
|
61
61
|
|
62
62
|
##
|
63
|
-
# @private
|
63
|
+
# @private A boolean value or a project ID string to indicate the
|
64
|
+
# project to be billed for operations.
|
64
65
|
attr_accessor :user_project
|
65
66
|
|
66
67
|
attr_reader :bucket
|
@@ -99,8 +99,8 @@ module Google
|
|
99
99
|
# {#project} for the ID of the current project.) If this parameter is
|
100
100
|
# set to a project ID other than the current project, and that project
|
101
101
|
# is authorized for the currently authenticated service account,
|
102
|
-
# transit costs will be billed to the given project.
|
103
|
-
# `nil`.
|
102
|
+
# transit costs will be billed to the given project. This parameter is
|
103
|
+
# required with requester pays-enabled buckets. The default is `nil`.
|
104
104
|
#
|
105
105
|
# The value provided will be applied to all operations on the returned
|
106
106
|
# bucket instances and their files.
|
@@ -162,7 +162,8 @@ module Google
|
|
162
162
|
# client. (See {#project} for the ID of the current project.) If this
|
163
163
|
# parameter is set to a project ID other than the current project, and
|
164
164
|
# that project is authorized for the currently authenticated service
|
165
|
-
# account, transit costs will be billed to the given project.
|
165
|
+
# account, transit costs will be billed to the given project. This
|
166
|
+
# parameter is required with requester pays-enabled buckets. The
|
166
167
|
# default is `nil`.
|
167
168
|
#
|
168
169
|
# The value provided will be applied to all operations on the returned
|
@@ -181,7 +182,7 @@ module Google
|
|
181
182
|
# bucket = storage.bucket "my-bucket"
|
182
183
|
# puts bucket.name
|
183
184
|
#
|
184
|
-
# @example With `user_project` set to
|
185
|
+
# @example With `user_project` set to bill costs to the default project:
|
185
186
|
# require "google/cloud/storage"
|
186
187
|
#
|
187
188
|
# storage = Google::Cloud::Storage.new
|
@@ -347,6 +347,25 @@ module Google
|
|
347
347
|
end
|
348
348
|
end
|
349
349
|
|
350
|
+
## Copy a file from source bucket/object to a
|
351
|
+
# destination bucket/object.
|
352
|
+
def compose_file bucket_name, source_files, destination_path,
|
353
|
+
destination_gapi, acl: nil, key: nil, user_project: nil
|
354
|
+
|
355
|
+
compose_req = Google::Apis::StorageV1::ComposeRequest.new \
|
356
|
+
source_objects: compose_file_source_objects(source_files),
|
357
|
+
destination: destination_gapi
|
358
|
+
|
359
|
+
execute do
|
360
|
+
service.compose_object \
|
361
|
+
bucket_name, destination_path,
|
362
|
+
compose_req,
|
363
|
+
destination_predefined_acl: acl,
|
364
|
+
user_project: user_project(user_project),
|
365
|
+
options: key_options(key)
|
366
|
+
end
|
367
|
+
end
|
368
|
+
|
350
369
|
##
|
351
370
|
# Download contents of a file.
|
352
371
|
def download_file bucket_name, file_path, target_path, generation: nil,
|
@@ -504,6 +523,19 @@ module Google
|
|
504
523
|
"false" => "NONE" }[str_or_bool.to_s.downcase]
|
505
524
|
end
|
506
525
|
|
526
|
+
def compose_file_source_objects source_files
|
527
|
+
source_files.map do |file|
|
528
|
+
if file.is_a? Google::Cloud::Storage::File
|
529
|
+
Google::Apis::StorageV1::ComposeRequest::SourceObject.new \
|
530
|
+
name: file.name,
|
531
|
+
generation: file.generation
|
532
|
+
else
|
533
|
+
Google::Apis::StorageV1::ComposeRequest::SourceObject.new \
|
534
|
+
name: file
|
535
|
+
end
|
536
|
+
end
|
537
|
+
end
|
538
|
+
|
507
539
|
def execute
|
508
540
|
yield
|
509
541
|
rescue Google::Apis::Error => e
|
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.7.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: 2017-
|
12
|
+
date: 2017-10-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|
@@ -229,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
229
|
version: '0'
|
230
230
|
requirements: []
|
231
231
|
rubyforge_project:
|
232
|
-
rubygems_version: 2.6.
|
232
|
+
rubygems_version: 2.6.14
|
233
233
|
signing_key:
|
234
234
|
specification_version: 4
|
235
235
|
summary: API Client library for Google Cloud Storage
|