diff --git a/lib/harbor/request.rb b/lib/harbor/request.rb index 98d802f..0faae1a 100644 --- a/lib/harbor/request.rb +++ b/lib/harbor/request.rb @@ -137,7 +137,9 @@ def path def accept @accept ||= begin entries = @env['HTTP_ACCEPT'].to_s.split(',') - entries.map { |e| accept_entry(e) }.sort_by { |e| e[1][0] }.map(&:first) + entries.map! { |e| accept_entry(e) } + entries.sort_by! { |e| [e.last, entries.index(e)] } + entries.map(&:first) end end diff --git a/test/request_test.rb b/test/request_test.rb index 636a292..a29afbb 100644 --- a/test/request_test.rb +++ b/test/request_test.rb @@ -27,7 +27,7 @@ def test_params_fetch def test_extracts_accept_types_preserving_quality_order request = get("/", { 'HTTP_ACCEPT' => 'text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c, */*; q=0.1' }) - expected_accept = ['text/x-c', 'text/html', 'text/x-dvi', 'text/plain', '*/*'] + expected_accept = ['text/html', 'text/x-c', 'text/x-dvi', 'text/plain', '*/*'] assert_equal expected_accept, request.accept end