aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2006-03-12 05:13:55 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2006-03-12 05:13:55 +0000
commit9e2932f816b0cac68361bb5adcdad3e4c3caeb04 (patch)
tree8258ef1eb9c811af61d54c24acb417416afd3878 /actionpack
parentde660957a50227ef71a7c16524ccec2c45b980b5 (diff)
downloadrails-9e2932f816b0cac68361bb5adcdad3e4c3caeb04.tar.gz
rails-9e2932f816b0cac68361bb5adcdad3e4c3caeb04.tar.bz2
rails-9e2932f816b0cac68361bb5adcdad3e4c3caeb04.zip
Assume that we accept what we give [DHH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3843 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/mime_type.rb2
-rwxr-xr-xactionpack/lib/action_controller/request.rb12
-rw-r--r--actionpack/test/controller/mime_responds_test.rb18
3 files changed, 28 insertions, 4 deletions
diff --git a/actionpack/lib/action_controller/mime_type.rb b/actionpack/lib/action_controller/mime_type.rb
index 0ab0221007..15dbc70915 100644
--- a/actionpack/lib/action_controller/mime_type.rb
+++ b/actionpack/lib/action_controller/mime_type.rb
@@ -39,6 +39,6 @@ module Mime
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 \ No newline at end of file
diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb
index 16acc50011..300a0ea60c 100755
--- a/actionpack/lib/action_controller/request.rb
+++ b/actionpack/lib/action_controller/request.rb
@@ -51,7 +51,7 @@ module ActionController
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 @@ module ActionController
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
diff --git a/actionpack/test/controller/mime_responds_test.rb b/actionpack/test/controller/mime_responds_test.rb
index f2aa45a168..184110aad1 100644
--- a/actionpack/test/controller/mime_responds_test.rb
+++ b/actionpack/test/controller/mime_responds_test.rb
@@ -48,6 +48,14 @@ class RespondToController < ActionController::Base
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 @@ class MimeControllerTest < Test::Unit::TestCase
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 \ No newline at end of file