google-cloud-storage 0.23.0 → 0.23.1
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/bucket.rb +18 -3
- data/lib/google/cloud/storage/file.rb +32 -6
- data/lib/google/cloud/storage/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d25ea51c3061bfb14179befa5250f8665e7f9691
|
4
|
+
data.tar.gz: b431f5182d343bb654b7d57cc75db83d6d5470f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f257e340fb77698aaa60a23ac31d86d42352ad6c70450e59a0a30166f96b3c9b111244033131041c1c567d5a34a0c981d1a74b662af844e1c6276a69b2ad35be
|
7
|
+
data.tar.gz: 419052576260453c9595b6c1a6236e8f325d0104fdd0ffc81f71bde1d17e00d28871eff0f8951ef9e56bba825289c7e00cbabff7bec861459fc32a6c23988a56
|
@@ -613,6 +613,9 @@ module Google
|
|
613
613
|
# @param [String] content_md5 The MD5 digest value in base64. If you
|
614
614
|
# provide this in the string, the client (usually a browser) must
|
615
615
|
# provide this HTTP header with this same value in its request.
|
616
|
+
# @param [Hash] headers Google extension headers (custom HTTP headers
|
617
|
+
# that begin with `x-goog-`) that must be included in requests that
|
618
|
+
# use the signed URL.
|
616
619
|
# @param [String] issuer Service Account's Client Email.
|
617
620
|
# @param [String] client_email Service Account's Client Email.
|
618
621
|
# @param [OpenSSL::PKey::RSA, String] signing_key Service Account's
|
@@ -649,11 +652,23 @@ module Google
|
|
649
652
|
# issuer: "service-account@gcloud.com",
|
650
653
|
# signing_key: key
|
651
654
|
#
|
655
|
+
# @example Using the headers option:
|
656
|
+
# require "google/cloud/storage"
|
657
|
+
#
|
658
|
+
# storage = Google::Cloud.storage
|
659
|
+
#
|
660
|
+
# bucket = storage.bucket "my-todo-app"
|
661
|
+
# shared_url = bucket.signed_url "avatars/heidi/400x400.png",
|
662
|
+
# headers: {
|
663
|
+
# "x-goog-acl" => "private",
|
664
|
+
# "x-goog-meta-foo" => "bar,baz"
|
665
|
+
# }
|
666
|
+
#
|
652
667
|
def signed_url path, method: nil, expires: nil, content_type: nil,
|
653
|
-
content_md5: nil,
|
654
|
-
signing_key: nil, private_key: nil
|
668
|
+
content_md5: nil, headers: nil, issuer: nil,
|
669
|
+
client_email: nil, signing_key: nil, private_key: nil
|
655
670
|
ensure_service!
|
656
|
-
options = { method: method, expires: expires,
|
671
|
+
options = { method: method, expires: expires, headers: headers,
|
657
672
|
content_type: content_type, content_md5: content_md5,
|
658
673
|
issuer: issuer, client_email: client_email,
|
659
674
|
signing_key: signing_key, private_key: private_key }
|
@@ -547,6 +547,9 @@ module Google
|
|
547
547
|
# @param [String] content_md5 The MD5 digest value in base64. If you
|
548
548
|
# provide this in the string, the client (usually a browser) must
|
549
549
|
# provide this HTTP header with this same value in its request.
|
550
|
+
# @param [Hash] headers Google extension headers (custom HTTP headers
|
551
|
+
# that begin with `x-goog-`) that must be included in requests that
|
552
|
+
# use the signed URL.
|
550
553
|
# @param [String] issuer Service Account's Client Email.
|
551
554
|
# @param [String] client_email Service Account's Client Email.
|
552
555
|
# @param [OpenSSL::PKey::RSA, String] signing_key Service Account's
|
@@ -584,11 +587,24 @@ module Google
|
|
584
587
|
# shared_url = file.signed_url issuer: "service-account@gcloud.com",
|
585
588
|
# signing_key: key
|
586
589
|
#
|
590
|
+
# @example Using the `headers` option:
|
591
|
+
# require "google/cloud/storage"
|
592
|
+
#
|
593
|
+
# storage = Google::Cloud::Storage.new
|
594
|
+
#
|
595
|
+
# bucket = storage.bucket "my-todo-app"
|
596
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
597
|
+
# shared_url = file.signed_url method: "GET",
|
598
|
+
# headers: {
|
599
|
+
# "x-goog-acl" => "public-read",
|
600
|
+
# "x-goog-meta-foo" => bar,baz"
|
601
|
+
# }
|
602
|
+
#
|
587
603
|
def signed_url method: nil, expires: nil, content_type: nil,
|
588
|
-
content_md5: nil,
|
589
|
-
signing_key: nil, private_key: nil
|
604
|
+
content_md5: nil, headers: nil, issuer: nil,
|
605
|
+
client_email: nil, signing_key: nil, private_key: nil
|
590
606
|
ensure_service!
|
591
|
-
options = { method: method, expires: expires,
|
607
|
+
options = { method: method, expires: expires, headers: headers,
|
592
608
|
content_type: content_type, content_md5: content_md5,
|
593
609
|
issuer: issuer, client_email: client_email,
|
594
610
|
signing_key: signing_key, private_key: private_key }
|
@@ -746,7 +762,7 @@ module Google
|
|
746
762
|
def signature_str options
|
747
763
|
[options[:method], options[:content_md5],
|
748
764
|
options[:content_type], options[:expires],
|
749
|
-
ext_path].join "\n"
|
765
|
+
format_extension_headers(options[:headers]) + ext_path].join "\n"
|
750
766
|
end
|
751
767
|
|
752
768
|
def determine_signing_key options = {}
|
@@ -781,8 +797,18 @@ module Google
|
|
781
797
|
def generate_signed_url issuer, signed_string, expires
|
782
798
|
signature = Base64.strict_encode64(signed_string).delete("\n")
|
783
799
|
"#{ext_url}?GoogleAccessId=#{CGI.escape issuer}" \
|
784
|
-
|
785
|
-
|
800
|
+
"&Expires=#{expires}" \
|
801
|
+
"&Signature=#{CGI.escape signature}"
|
802
|
+
end
|
803
|
+
|
804
|
+
def format_extension_headers headers
|
805
|
+
return "" if headers.nil?
|
806
|
+
fail "Headers must be given in a Hash" unless headers.is_a? Hash
|
807
|
+
flatten = headers.map do |key, value|
|
808
|
+
"#{key.to_s.downcase}:#{value.gsub(/\s+/, ' ')}\n"
|
809
|
+
end
|
810
|
+
flatten.reject! { |h| h.start_with? "x-goog-encryption-key" }
|
811
|
+
flatten.sort.join
|
786
812
|
end
|
787
813
|
end
|
788
814
|
|
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: 0.23.
|
4
|
+
version: 0.23.1
|
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: 2016-12-
|
12
|
+
date: 2016-12-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|