diff options
author | Kasper Timm Hansen <kaspth@gmail.com> | 2016-11-22 22:22:34 +0100 |
---|---|---|
committer | Kasper Timm Hansen <kaspth@gmail.com> | 2016-11-23 22:02:19 +0100 |
commit | 86754a8f7b4986323aae3be172330fbc228c27ab (patch) | |
tree | dcfaf38a44dace30b40ce9a597eed3cc2c9d4937 /actionpack/lib/action_dispatch/testing/integration.rb | |
parent | 49aa974ec8b15721d53b3b6abea88bd6ba433a68 (diff) | |
download | rails-86754a8f7b4986323aae3be172330fbc228c27ab.tar.gz rails-86754a8f7b4986323aae3be172330fbc228c27ab.tar.bz2 rails-86754a8f7b4986323aae3be172330fbc228c27ab.zip |
Use accept header instead of mangling request path.
Instead of appending a format to the request, it's much better
to just pass a more appropriate accept header. Rails will figure
out the format from that instead.
This allows devs to use `:as` on routes that don't have a format.
Introduce an `IdentityEncoder` to avoid `if request_encoder`,
essentially a better version of the purpose of the `WWWFormEncoder`.
One that makes conceptual sense on GET requests too.
Fixes #27144.
Diffstat (limited to 'actionpack/lib/action_dispatch/testing/integration.rb')
-rw-r--r-- | actionpack/lib/action_dispatch/testing/integration.rb | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/actionpack/lib/action_dispatch/testing/integration.rb b/actionpack/lib/action_dispatch/testing/integration.rb index a1c2a8858a..c60395acf9 100644 --- a/actionpack/lib/action_dispatch/testing/integration.rb +++ b/actionpack/lib/action_dispatch/testing/integration.rb @@ -211,7 +211,7 @@ module ActionDispatch end if path =~ %r{://} - path = build_expanded_path(path, request_encoder) do |location| + path = build_expanded_path(path) do |location| https! URI::HTTPS === location if location.scheme if url_host = location.host @@ -220,8 +220,6 @@ module ActionDispatch host! url_host end end - elsif as - path = build_expanded_path(path, request_encoder) end hostname, port = host.split(":") @@ -239,7 +237,7 @@ module ActionDispatch "HTTP_HOST" => host, "REMOTE_ADDR" => remote_addr, "CONTENT_TYPE" => request_encoder.content_type, - "HTTP_ACCEPT" => accept + "HTTP_ACCEPT" => request_encoder.accept_header || accept } wrapped_headers = Http::Headers.from_hash({}) @@ -291,10 +289,10 @@ module ActionDispatch "#{env['rack.url_scheme']}://#{env['SERVER_NAME']}:#{env['SERVER_PORT']}#{path}" end - def build_expanded_path(path, request_encoder) + def build_expanded_path(path) location = URI.parse(path) yield location if block_given? - path = request_encoder.append_format_to location.path + path = location.path location.query ? "#{path}?#{location.query}" : path end end |