aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2017-07-05 13:07:17 +0200
committerDavid Heinemeier Hansson <david@loudthinking.com>2017-07-05 13:07:17 +0200
commit4eebb51d015e4851f55de6491c2ae7f9d0813386 (patch)
treee72d98ed41bd57a3c29e20a6855d0d41466522d2
parent571509ad12bf3bcb3190efd7494a38c4796302b8 (diff)
parent4f6410795c053930d31ee651cf03b0efa6b38e61 (diff)
downloadrails-4eebb51d015e4851f55de6491c2ae7f9d0813386.tar.gz
rails-4eebb51d015e4851f55de6491c2ae7f9d0813386.tar.bz2
rails-4eebb51d015e4851f55de6491c2ae7f9d0813386.zip
Merge remote-tracking branch 'origin/master'
-rw-r--r--lib/active_vault/site/gcs_site.rb5
-rw-r--r--test/site/gcs_site_test.rb9
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/active_vault/site/gcs_site.rb b/lib/active_vault/site/gcs_site.rb
index e509ebbbd2..49cbf5d9cb 100644
--- a/lib/active_vault/site/gcs_site.rb
+++ b/lib/active_vault/site/gcs_site.rb
@@ -27,6 +27,11 @@ class ActiveVault::Site::GCSSite < ActiveVault::Site
end
+ def url(key, expires_in:, disposition:, filename:)
+ file_for(key).signed_url(expires: expires_in) + "&" +
+ { "response-content-disposition" => "#{disposition}; filename=\"#{filename}\"" }.to_query
+ end
+
def byte_size(key)
file_for(key).size
end
diff --git a/test/site/gcs_site_test.rb b/test/site/gcs_site_test.rb
index 56514ef136..3185c43f3c 100644
--- a/test/site/gcs_site_test.rb
+++ b/test/site/gcs_site_test.rb
@@ -5,6 +5,15 @@ if SITE_CONFIGURATIONS[:gcs]
SITE = ActiveVault::Site.configure(:GCS, SITE_CONFIGURATIONS[:gcs])
include ActiveVault::Site::SharedSiteTests
+
+ test "signed URL generation" do
+ travel_to Time.now do
+ url = SITE.bucket.signed_url(path: FIXTURE_KEY, expires: 120) +
+ "&response-content-disposition=inline%3B+filename%3D%22test.txt%22"
+
+ assert_equal url, @site.url(FIXTURE_KEY, expires_in: 2.minutes, disposition: :inline, filename: "test.txt")
+ end
+ end
end
else
puts "Skipping GCS Site tests because no GCS configuration was supplied"