Permalink
Browse files

Assume that we accept what we give [DHH]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3843 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent de66095 commit 9e2932f816b0cac68361bb5adcdad3e4c3caeb04 @dhh dhh committed Mar 12, 2006
@@ -39,6 +39,6 @@ def ===(list)
JAVASCRIPT = Type.new "text/javascript"
XML = Type.new "application/xml"
RSS = Type.new "application/rss+xml"
- ATOM = Type.new "application/rss+atom"
+ ATOM = Type.new "application/atom+xml"
YAML = Type.new "application/x-yaml"
end
@@ -51,7 +51,7 @@ def content_type
return @content_type if @content_type
@content_type = @env['CONTENT_TYPE'].to_s.downcase
-
+
if @env['HTTP_X_POST_DATA_FORMAT']
case @env['HTTP_X_POST_DATA_FORMAT'].downcase.to_sym
when :yaml
@@ -65,8 +65,14 @@ def content_type
end
def accepts
- @accepts ||= (@env['HTTP_ACCEPT'].strip.blank? ? "*/*" : @env['HTTP_ACCEPT']).split(";").collect! do |mime_type|
- Mime::Type.new(mime_type.strip)
+ return @accepts if @accepts
+
+ @accepts = if @env['HTTP_ACCEPT'].to_s.strip.blank?
+ [ content_type, Mime::ALL ]
+ else
+ @env['HTTP_ACCEPT'].split(";").collect! do |mime_type|
+ Mime::Type.new(mime_type.strip)
+ end
end
end
@@ -48,6 +48,14 @@ def using_argument_defaults
end
end
+ def made_for_content_type
+ respond_to do |type|
+ type.rss { render :text => "RSS" }
+ type.atom { render :text => "ATOM" }
+ type.all { render :text => "Nothing" }
+ end
+ end
+
def rescue_action(e)
raise unless ActionController::MissingTemplate === e
end
@@ -137,4 +145,14 @@ def test_using_argument_defaults
get :using_argument_defaults
assert_equal "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<person>\n <name>David</name>\n</person>\n", @response.body
end
+
+ def test_with_content_type
+ @request.env["CONTENT_TYPE"] = "application/atom+xml"
+ get :made_for_content_type
+ assert_equal "ATOM", @response.body
+
+ @request.env["CONTENT_TYPE"] = "application/rss+xml"
+ get :made_for_content_type
+ assert_equal "RSS", @response.body
+ end
end

0 comments on commit 9e2932f

Please sign in to comment.