aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack')
-rwxr-xr-xactionpack/lib/action_controller/base.rb8
-rwxr-xr-xactionpack/lib/action_controller/cgi_ext/cgi_methods.rb4
-rw-r--r--actionpack/lib/action_controller/deprecated_request_methods.rb2
-rw-r--r--actionpack/lib/action_controller/mime_type.rb12
-rwxr-xr-xactionpack/lib/action_controller/request.rb4
-rw-r--r--actionpack/lib/action_view/helpers/javascripts/prototype.js2
-rw-r--r--actionpack/test/controller/mime_responds_test.rb4
-rw-r--r--actionpack/test/controller/webservice_test.rb10
8 files changed, 27 insertions, 19 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb
index c6c052ec56..4663828c96 100755
--- a/actionpack/lib/action_controller/base.rb
+++ b/actionpack/lib/action_controller/base.rb
@@ -271,7 +271,7 @@ module ActionController #:nodoc:
#
# Example of doing your own parser for a custom content type:
#
- # ActionController::Base.param_parsers['application/atom+xml'] = Proc.new do |data|
+ # ActionController::Base.param_parsers[Mime::Type.lookup('application/atom+xml')] = Proc.new do |data|
# node = REXML::Document.new(post)
# { node.root.name => node.root }
# end
@@ -281,10 +281,10 @@ module ActionController #:nodoc:
# in params[:r][:name] for "David" instead of params[:name]. To get the old behavior, you can
# re-register XmlSimple as application/xml handler and enable application/x-yaml like this:
#
- # ActionController::Base.param_parsers['application/xml'] =
+ # ActionController::Base.param_parsers[Mime::XML] =
# Proc.new { |data| XmlSimple.xml_in(data, 'ForceArray' => false) }
- # ActionController::Base.param_parsers['application/x-yaml'] = :yaml
- @@param_parsers = { 'application/xml' => :xml_simple }
+ # ActionController::Base.param_parsers[Mime::YAML] = :yaml
+ @@param_parsers = { Mime::XML => :xml_simple }
cattr_accessor :param_parsers
# Template root determines the base from which template references will be made. So a call to render("test/template")
diff --git a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
index e09fc4ac11..c8a00ac3aa 100755
--- a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
+++ b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
@@ -58,8 +58,8 @@ class CGIMethods #:nodoc:
parsed_params
end
- def self.parse_formatted_request_parameters(format, raw_post_data)
- params = case strategy = ActionController::Base.param_parsers[format]
+ def self.parse_formatted_request_parameters(mime_type, raw_post_data)
+ params = case strategy = ActionController::Base.param_parsers[mime_type]
when Proc
strategy.call(raw_post_data)
when :xml_simple
diff --git a/actionpack/lib/action_controller/deprecated_request_methods.rb b/actionpack/lib/action_controller/deprecated_request_methods.rb
index 0364831873..a6cf87e358 100644
--- a/actionpack/lib/action_controller/deprecated_request_methods.rb
+++ b/actionpack/lib/action_controller/deprecated_request_methods.rb
@@ -6,7 +6,7 @@ module ActionController
# For backward compatibility, the post format is extracted from the
# X-Post-Data-Format HTTP header if present.
def post_format
- case content_type
+ case content_type.to_s
when 'application/xml'
:xml
when 'application/x-yaml'
diff --git a/actionpack/lib/action_controller/mime_type.rb b/actionpack/lib/action_controller/mime_type.rb
index ad2f5aaac5..6a33fdc19a 100644
--- a/actionpack/lib/action_controller/mime_type.rb
+++ b/actionpack/lib/action_controller/mime_type.rb
@@ -1,12 +1,16 @@
module Mime
- class Type < String
+ class Type
def self.lookup(string)
LOOKUP[string]
end
def initialize(string, symbol = nil, synonyms = [])
@symbol, @synonyms = symbol, synonyms
- super(string)
+ @string = string
+ end
+
+ def to_s
+ @string
end
def to_sym
@@ -20,6 +24,10 @@ module Mime
super
end
end
+
+ def ==(mime_type)
+ (@synonyms + [ self ]).any? { |synonym| synonym.to_s == mime_type.to_s } if mime_type
+ end
end
ALL = Type.new "*/*", :all
diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb
index cbefc2e490..d5879078af 100755
--- a/actionpack/lib/action_controller/request.rb
+++ b/actionpack/lib/action_controller/request.rb
@@ -70,8 +70,8 @@ module ActionController
@accepts = if @env['HTTP_ACCEPT'].to_s.strip.blank?
[ content_type, Mime::ALL ]
else
- @env['HTTP_ACCEPT'].split(";").collect! do |mime_type|
- Mime::Type.lookup(mime_type.strip)
+ @env['HTTP_ACCEPT'].split(",").collect! do |mime_type|
+ Mime::Type.lookup(mime_type.split(";").first.strip)
end
end
end
diff --git a/actionpack/lib/action_view/helpers/javascripts/prototype.js b/actionpack/lib/action_view/helpers/javascripts/prototype.js
index 5093f40189..a9195b89e6 100644
--- a/actionpack/lib/action_view/helpers/javascripts/prototype.js
+++ b/actionpack/lib/action_view/helpers/javascripts/prototype.js
@@ -704,7 +704,7 @@ Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
var requestHeaders =
['X-Requested-With', 'XMLHttpRequest',
'X-Prototype-Version', Prototype.Version,
- 'Accept', 'text/javascript; text/html; text/xml; */*' ];
+ 'Accept', 'text/javascript, text/xml, text/html, */*' ];
if (this.options.method == 'post') {
requestHeaders.push('Content-type',
diff --git a/actionpack/test/controller/mime_responds_test.rb b/actionpack/test/controller/mime_responds_test.rb
index 1470fa9899..159d57f1c3 100644
--- a/actionpack/test/controller/mime_responds_test.rb
+++ b/actionpack/test/controller/mime_responds_test.rb
@@ -111,7 +111,7 @@ class MimeControllerTest < Test::Unit::TestCase
end
def test_js_or_html
- @request.env["HTTP_ACCEPT"] = "text/javascript; text/html"
+ @request.env["HTTP_ACCEPT"] = "text/javascript, text/html"
get :js_or_html
assert_equal 'JS', @response.body
@@ -123,7 +123,7 @@ class MimeControllerTest < Test::Unit::TestCase
end
def test_js_or_anything
- @request.env["HTTP_ACCEPT"] = "text/javascript; */*"
+ @request.env["HTTP_ACCEPT"] = "text/javascript, */*"
get :js_or_html
assert_equal 'JS', @response.body
diff --git a/actionpack/test/controller/webservice_test.rb b/actionpack/test/controller/webservice_test.rb
index 2243397d87..c99abeaa9e 100644
--- a/actionpack/test/controller/webservice_test.rb
+++ b/actionpack/test/controller/webservice_test.rb
@@ -28,7 +28,7 @@ class WebServiceTest < Test::Unit::TestCase
def setup
@controller = TestController.new
ActionController::Base.param_parsers.clear
- ActionController::Base.param_parsers['application/xml'] = :xml_node
+ ActionController::Base.param_parsers[Mime::XML] = :xml_node
end
def test_check_parameters
@@ -55,7 +55,7 @@ class WebServiceTest < Test::Unit::TestCase
end
def test_register_and_use_yaml
- ActionController::Base.param_parsers['application/x-yaml'] = Proc.new { |d| YAML.load(d) }
+ ActionController::Base.param_parsers[Mime::YAML] = Proc.new { |d| YAML.load(d) }
process('POST', 'application/x-yaml', {"entry" => "loaded from yaml"}.to_yaml)
assert_equal 'entry', @controller.response.body
assert @controller.params.has_key?(:entry)
@@ -63,7 +63,7 @@ class WebServiceTest < Test::Unit::TestCase
end
def test_register_and_use_yaml_as_symbol
- ActionController::Base.param_parsers['application/x-yaml'] = :yaml
+ ActionController::Base.param_parsers[Mime::YAML] = :yaml
process('POST', 'application/x-yaml', {"entry" => "loaded from yaml"}.to_yaml)
assert_equal 'entry', @controller.response.body
assert @controller.params.has_key?(:entry)
@@ -71,7 +71,7 @@ class WebServiceTest < Test::Unit::TestCase
end
def test_register_and_use_xml_simple
- ActionController::Base.param_parsers['application/xml'] = Proc.new { |data| XmlSimple.xml_in(data, 'ForceArray' => false) }
+ ActionController::Base.param_parsers[Mime::XML] = Proc.new { |data| XmlSimple.xml_in(data, 'ForceArray' => false) }
process('POST', 'application/xml', '<request><summary>content...</summary><title>SimpleXml</title></request>' )
assert_equal 'summary, title', @controller.response.body
assert @controller.params.has_key?(:summary)
@@ -82,7 +82,7 @@ class WebServiceTest < Test::Unit::TestCase
def test_deprecated_request_methods
process('POST', 'application/x-yaml')
- assert_equal 'application/x-yaml', @controller.request.content_type
+ assert_equal Mime::YAML, @controller.request.content_type
assert_equal true, @controller.request.post?
assert_equal :yaml, @controller.request.post_format
assert_equal true, @controller.request.yaml_post?