Permalink
Browse files

Ignore odd charset declaration in CONTENT_TYPE header which would thr…

…ow off mime type lookup.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6340 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 0e8c3b8 commit e52c28a425192966379ecf4ae3b20f0b9442e9e2 Tobias Lütke committed Mar 5, 2007
Showing with 21 additions and 1 deletion.
  1. +2 −1 actionpack/lib/action_controller/request.rb
  2. +19 −0 actionpack/test/controller/request_test.rb
@@ -58,7 +58,8 @@ def headers
def content_type
@content_type ||=
begin
- content_type = @env['CONTENT_TYPE'].to_s.downcase
+ # Receive header sans any charset information.
+ content_type = @env['CONTENT_TYPE'].to_s.sub(/\s*\;.*$/, '').strip.downcase
if x_post_format = @env['HTTP_X_POST_DATA_FORMAT']
case x_post_format.to_s.downcase
@@ -323,6 +323,25 @@ def test_format
@request.env["HTTP_ACCEPT"] = "text/javascript"
assert_equal Mime::JS, @request.format
end
+
+ def test_content_type
+ @request.env["CONTENT_TYPE"] = "text/html"
+ assert_equal Mime::HTML, @request.content_type
+ end
+
+ def test_content_no_type
+ assert_equal nil, @request.content_type
+ end
+
+ def test_content_type_xml
+ @request.env["CONTENT_TYPE"] = "application/xml"
+ assert_equal Mime::XML, @request.content_type
+ end
+
+ def test_content_type_with_charset
+ @request.env["CONTENT_TYPE"] = "application/xml; charset=UTF-8"
+ assert_equal Mime::XML, @request.content_type
+ end
protected
def set_request_method_to(method)

0 comments on commit e52c28a

Please sign in to comment.