From 7409bb2ff8e20f9036842a68f34e215cefdd98d9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Jul 2017 17:34:37 +0200 Subject: Actually #url needs to deal with the disposition --- lib/active_file/blob.rb | 4 ++-- lib/active_file/site.rb | 2 +- lib/active_file/site/disk_site.rb | 6 +++--- lib/active_file/site/s3_site.rb | 5 +++-- 4 files changed, 9 insertions(+), 8 deletions(-) (limited to 'lib/active_file') diff --git a/lib/active_file/blob.rb b/lib/active_file/blob.rb index bf34aac794..8a1950c9dc 100644 --- a/lib/active_file/blob.rb +++ b/lib/active_file/blob.rb @@ -33,8 +33,8 @@ class ActiveFile::Blob < ActiveRecord::Base ActiveFile::Filename.new(self[:filename]) end - def url(expires_in: 5.minutes) - site.url key, expires_in: expires_in + def url(expires_in: 5.minutes, disposition: :inline) + site.url key, expires_in: expires_in, disposition: disposition, filename: filename end diff --git a/lib/active_file/site.rb b/lib/active_file/site.rb index fc098e694f..1c71f74f0d 100644 --- a/lib/active_file/site.rb +++ b/lib/active_file/site.rb @@ -27,7 +27,7 @@ class ActiveFile::Site end - def url(key, expires_in: nil) + def url(key, expires_in:, disposition:, filename:) raise NotImplementedError end diff --git a/lib/active_file/site/disk_site.rb b/lib/active_file/site/disk_site.rb index 3a98971274..ec60175bbf 100644 --- a/lib/active_file/site/disk_site.rb +++ b/lib/active_file/site/disk_site.rb @@ -37,13 +37,13 @@ class ActiveFile::Site::DiskSite < ActiveFile::Site end - def url(key, expires_in: nil) + def url(key, expires_in:, disposition:, filename:) verified_key_with_expiration = ActiveFile::VerifiedKeyWithExpiration.encode(key, expires_in: expires_in) if defined?(Rails) - Rails.application.routes.url_helpers.rails_disk_blob_path(verified_key_with_expiration) + Rails.application.routes.url_helpers.rails_disk_blob_path(verified_key_with_expiration, disposition: disposition) else - "/rails/blobs/#{verified_key_with_expiration}" + "/rails/blobs/#{verified_key_with_expiration}?disposition=#{disposition}" end end diff --git a/lib/active_file/site/s3_site.rb b/lib/active_file/site/s3_site.rb index e407f84861..cfd2ddcc9a 100644 --- a/lib/active_file/site/s3_site.rb +++ b/lib/active_file/site/s3_site.rb @@ -29,8 +29,9 @@ class ActiveFile::Site::S3Site < ActiveFile::Site end - def url(key, expires_in: nil) - object_for(key).presigned_url(:get, expires_in: expires_in) + def url(key, expires_in:, disposition:, filename:) + object_for(key).presigned_url :get, expires_in: expires_in, + response_content_disposition: "#{disposition}; filename=#{filename}" end def byte_size(key) -- cgit v1.2.3