aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/active_storage/service
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/active_storage/service')
-rw-r--r--app/models/active_storage/service/disk_service.rb8
-rw-r--r--app/models/active_storage/service/gcs_service.rb8
-rw-r--r--app/models/active_storage/service/s3_service.rb5
3 files changed, 13 insertions, 8 deletions
diff --git a/app/models/active_storage/service/disk_service.rb b/app/models/active_storage/service/disk_service.rb
index 59b180d0e8..3cde203a31 100644
--- a/app/models/active_storage/service/disk_service.rb
+++ b/app/models/active_storage/service/disk_service.rb
@@ -51,15 +51,17 @@ class ActiveStorage::Service::DiskService < ActiveStorage::Service
end
end
- def url(key, expires_in:, disposition:, filename:)
+ def url(key, expires_in:, disposition:, filename:, content_type:)
instrument :url, key do |payload|
verified_key_with_expiration = ActiveStorage.verifier.generate(key, expires_in: expires_in, purpose: :blob_key)
generated_url =
if defined?(Rails) && defined?(Rails.application)
- Rails.application.routes.url_helpers.rails_disk_blob_path(verified_key_with_expiration, disposition: disposition, filename: filename)
+ Rails.application.routes.url_helpers.rails_disk_blob_path \
+ verified_key_with_expiration,
+ disposition: disposition, filename: filename, content_type: content_type
else
- "/rails/active_storage/disk/#{verified_key_with_expiration}/#{filename}?disposition=#{disposition}"
+ "/rails/active_storage/disk/#{verified_key_with_expiration}/#{filename}?disposition=#{disposition}&content_type=#{content_type}"
end
payload[:url] = generated_url
diff --git a/app/models/active_storage/service/gcs_service.rb b/app/models/active_storage/service/gcs_service.rb
index 7053a130c0..4530de22f6 100644
--- a/app/models/active_storage/service/gcs_service.rb
+++ b/app/models/active_storage/service/gcs_service.rb
@@ -42,10 +42,12 @@ class ActiveStorage::Service::GCSService < ActiveStorage::Service
end
end
- def url(key, expires_in:, disposition:, filename:)
+ def url(key, expires_in:, disposition:, filename:, content_type:)
instrument :url, key do |payload|
- query = { "response-content-disposition" => "#{disposition}; filename=\"#{filename}\"" }
- generated_url = file_for(key).signed_url(expires: expires_in, query: query)
+ generated_url = file_for(key).signed_url expires: expires_in, query: {
+ "response-content-disposition" => "#{disposition}; filename=\"#{filename}\"",
+ "response-content-type" => content_type
+ }
payload[:url] = generated_url
diff --git a/app/models/active_storage/service/s3_service.rb b/app/models/active_storage/service/s3_service.rb
index efffdec157..4c17f9902f 100644
--- a/app/models/active_storage/service/s3_service.rb
+++ b/app/models/active_storage/service/s3_service.rb
@@ -47,10 +47,11 @@ class ActiveStorage::Service::S3Service < ActiveStorage::Service
end
end
- def url(key, expires_in:, disposition:, filename:)
+ def url(key, expires_in:, disposition:, filename:, content_type:)
instrument :url, key do |payload|
generated_url = object_for(key).presigned_url :get, expires_in: expires_in,
- response_content_disposition: "#{disposition}; filename=\"#{filename}\""
+ response_content_disposition: "#{disposition}; filename=\"#{filename}\"",
+ response_content_type: content_type
payload[:url] = generated_url