未验证 提交 352445b2 编写于 作者: G Gannon McGibbon 提交者: GitHub

Merge pull request #37904 from peterzhu2118/as-remove-query-params

Remove unused query params in DiskService
* Remove unused `disposition` and `content_type` query parameters for `DiskService`.
*Peter Zhu*
* Use `DiskController` for both public and private files. * Use `DiskController` for both public and private files.
`DiskController` is able to handle multiple services by adding a `DiskController` is able to handle multiple services by adding a
......
...@@ -130,8 +130,6 @@ def generate_url(key, expires_in:, filename:, content_type:, disposition:) ...@@ -130,8 +130,6 @@ def generate_url(key, expires_in:, filename:, content_type:, disposition:)
protocol: current_uri.scheme, protocol: current_uri.scheme,
host: current_uri.host, host: current_uri.host,
port: current_uri.port, port: current_uri.port,
disposition: content_disposition,
content_type: content_type,
filename: filename filename: filename
) )
end end
......
...@@ -14,7 +14,9 @@ class ActiveStorage::RepresentationsControllerWithVariantsTest < ActionDispatch: ...@@ -14,7 +14,9 @@ class ActiveStorage::RepresentationsControllerWithVariantsTest < ActionDispatch:
signed_blob_id: @blob.signed_id, signed_blob_id: @blob.signed_id,
variation_key: ActiveStorage::Variation.encode(resize: "100x100")) variation_key: ActiveStorage::Variation.encode(resize: "100x100"))
assert_redirected_to(/racecar\.jpg\?.*disposition=inline/) assert_redirected_to(/racecar\.jpg/)
follow_redirect!
assert_match(/^inline/, response.headers["Content-Disposition"])
image = read_image(@blob.variant(resize: "100x100")) image = read_image(@blob.variant(resize: "100x100"))
assert_equal 100, image.width assert_equal 100, image.width
...@@ -43,7 +45,9 @@ class ActiveStorage::RepresentationsControllerWithPreviewsTest < ActionDispatch: ...@@ -43,7 +45,9 @@ class ActiveStorage::RepresentationsControllerWithPreviewsTest < ActionDispatch:
variation_key: ActiveStorage::Variation.encode(resize: "100x100")) variation_key: ActiveStorage::Variation.encode(resize: "100x100"))
assert_predicate @blob.preview_image, :attached? assert_predicate @blob.preview_image, :attached?
assert_redirected_to(/report\.png\?.*disposition=inline/) assert_redirected_to(/report\.png/)
follow_redirect!
assert_match(/^inline/, response.headers["Content-Disposition"])
image = read_image(@blob.preview_image.variant(resize: "100x100")) image = read_image(@blob.preview_image.variant(resize: "100x100"))
assert_equal 77, image.width assert_equal 77, image.width
......
...@@ -265,9 +265,8 @@ def expected_url_for(blob, disposition: :attachment, filename: nil, content_type ...@@ -265,9 +265,8 @@ def expected_url_for(blob, disposition: :attachment, filename: nil, content_type
filename ||= blob.filename filename ||= blob.filename
content_type ||= blob.content_type content_type ||= blob.content_type
query = { disposition: ActionDispatch::Http::ContentDisposition.format(disposition: disposition, filename: filename.sanitized), content_type: content_type } key_params = { key: blob.key, disposition: ActionDispatch::Http::ContentDisposition.format(disposition: disposition, filename: filename.sanitized), content_type: content_type, service_name: service_name }
key_params = { key: blob.key }.merge(query).merge(service_name: service_name)
"https://example.com/rails/active_storage/disk/#{ActiveStorage.verifier.generate(key_params, expires_in: 5.minutes, purpose: :blob_key)}/#{filename}?#{query.to_param}" "https://example.com/rails/active_storage/disk/#{ActiveStorage.verifier.generate(key_params, expires_in: 5.minutes, purpose: :blob_key)}/#{filename}"
end end
end end
...@@ -14,6 +14,6 @@ class ActiveStorage::Service::DiskPublicServiceTest < ActiveSupport::TestCase ...@@ -14,6 +14,6 @@ class ActiveStorage::Service::DiskPublicServiceTest < ActiveSupport::TestCase
test "public URL generation" do test "public URL generation" do
url = @service.url(@key, disposition: :inline, filename: ActiveStorage::Filename.new("avatar.png"), content_type: "image/png") url = @service.url(@key, disposition: :inline, filename: ActiveStorage::Filename.new("avatar.png"), content_type: "image/png")
assert_match(/^https:\/\/example.com\/rails\/active_storage\/disk\/.*\/avatar\.png\?content_type=image%2Fpng&disposition=inline.*/, url) assert_match(/^https:\/\/example.com\/rails\/active_storage\/disk\/.*\/avatar\.png/, url)
end end
end end
...@@ -16,7 +16,7 @@ class ActiveStorage::Service::DiskServiceTest < ActiveSupport::TestCase ...@@ -16,7 +16,7 @@ class ActiveStorage::Service::DiskServiceTest < ActiveSupport::TestCase
original_url_options = Rails.application.routes.default_url_options.dup original_url_options = Rails.application.routes.default_url_options.dup
Rails.application.routes.default_url_options.merge!(protocol: "http", host: "test.example.com", port: 3001) Rails.application.routes.default_url_options.merge!(protocol: "http", host: "test.example.com", port: 3001)
begin begin
assert_match(/^https:\/\/example.com\/rails\/active_storage\/disk\/.*\/avatar\.png\?content_type=image%2Fpng&disposition=inline/, assert_match(/^https:\/\/example.com\/rails\/active_storage\/disk\/.*\/avatar\.png$/,
@service.url(@key, expires_in: 5.minutes, disposition: :inline, filename: ActiveStorage::Filename.new("avatar.png"), content_type: "image/png")) @service.url(@key, expires_in: 5.minutes, disposition: :inline, filename: ActiveStorage::Filename.new("avatar.png"), content_type: "image/png"))
ensure ensure
Rails.application.routes.default_url_options = original_url_options Rails.application.routes.default_url_options = original_url_options
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册