diff options
author | Mike Gunderloy <MikeG1@larkfarm.com> | 2017-08-08 09:35:42 -0500 |
---|---|---|
committer | Mike Gunderloy <MikeG1@larkfarm.com> | 2017-08-08 09:35:42 -0500 |
commit | 6ef37940135c8fe7a6fca2033dc1fe132d2c468f (patch) | |
tree | 6b9677163bc918842a1084854624b79a48262fe6 | |
parent | 6089b3140dedc087d80d67fe4c60f280db9e8d6e (diff) | |
download | rails-6ef37940135c8fe7a6fca2033dc1fe132d2c468f.tar.gz rails-6ef37940135c8fe7a6fca2033dc1fe132d2c468f.tar.bz2 rails-6ef37940135c8fe7a6fca2033dc1fe132d2c468f.zip |
Support content_type in AzureStorageService#url
Add in the content_type option, which is defined as part of the generic
ActiveStorage::Service class.
Without this option, attempts to generate a URL for an attached file
fail with "ArgumentError (unknown keyword: content_type)"
-rw-r--r-- | activestorage/lib/active_storage/service/azure_storage_service.rb | 5 | ||||
-rw-r--r-- | activestorage/test/service/azure_storage_service_test.rb | 9 |
2 files changed, 12 insertions, 2 deletions
diff --git a/activestorage/lib/active_storage/service/azure_storage_service.rb b/activestorage/lib/active_storage/service/azure_storage_service.rb index c2e1b25a43..2e0b20cce3 100644 --- a/activestorage/lib/active_storage/service/azure_storage_service.rb +++ b/activestorage/lib/active_storage/service/azure_storage_service.rb @@ -57,11 +57,12 @@ module ActiveStorage end end - def url(key, expires_in:, disposition:, filename:) + def url(key, expires_in:, disposition:, filename:, content_type:) instrument :url, key do |payload| base_url = url_for(key) generated_url = signer.signed_uri(URI(base_url), false, permissions: "r", - expiry: format_expiry(expires_in), content_disposition: "#{disposition}; filename=\"#{filename}\"").to_s + expiry: format_expiry(expires_in), content_type: content_type, + content_disposition: "#{disposition}; filename=\"#{filename}\"").to_s payload[:url] = generated_url diff --git a/activestorage/test/service/azure_storage_service_test.rb b/activestorage/test/service/azure_storage_service_test.rb index e2be510b60..cc4d7aa5f6 100644 --- a/activestorage/test/service/azure_storage_service_test.rb +++ b/activestorage/test/service/azure_storage_service_test.rb @@ -6,6 +6,15 @@ if SERVICE_CONFIGURATIONS[:azure] SERVICE = ActiveStorage::Service.configure(:azure, SERVICE_CONFIGURATIONS) include ActiveStorage::Service::SharedServiceTests + + test "signed URL generation" do + url = @service.url(FIXTURE_KEY, expires_in: 5.minutes, + disposition: :inline, filename: "avatar.png", content_type: "image/png") + + assert_match(/(\S+)&rsct=image%2Fpng&rscd=inline%3B\+filename%3D%22avatar.png/, url) + assert_match SERVICE_CONFIGURATIONS[:azure][:container], url + end + end else |