diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2014-07-18 15:23:18 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2014-07-18 15:23:18 -0700 |
commit | d1f32cdf4a798f7ebeaacda4013736dba20b60e1 (patch) | |
tree | 01a8052b467459dafc5ab5a215ef01767dc9f70d | |
parent | cc8279f4a158e51975838e6202581c3d5e33f1c4 (diff) | |
parent | 28ba782f06d97085862f72227815d492fcfc83c9 (diff) | |
download | rack-d1f32cdf4a798f7ebeaacda4013736dba20b60e1.tar.gz |
Merge pull request #714 from rafaelfranca/rm-fix-media-type-params
Fix media_type_params when Content-Type parameters contains quoted-strings
-rw-r--r-- | lib/rack/request.rb | 2 | ||||
-rw-r--r-- | test/spec_request.rb | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/rack/request.rb b/lib/rack/request.rb index 5a446acd..ac94026c 100644 --- a/lib/rack/request.rb +++ b/lib/rack/request.rb @@ -52,7 +52,7 @@ module Rack return {} if content_type.nil? Hash[*content_type.split(/\s*[;,]\s*/)[1..-1]. collect { |s| s.split('=', 2) }. - map { |k,v| [k.downcase, v] }.flatten] + map { |k,v| [k.downcase, v.gsub(/\A"|"\z/, "")] }.flatten] end # The character set of the request body if a "charset" media type diff --git a/test/spec_request.rb b/test/spec_request.rb index 2b4b3c0b..b2257c7c 100644 --- a/test/spec_request.rb +++ b/test/spec_request.rb @@ -623,7 +623,7 @@ describe Rack::Request do should "handle multiple media type parameters" do req = Rack::Request.new \ Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => 'text/plain; foo=BAR,baz=bizzle dizzle;BLING=bam') + "CONTENT_TYPE" => 'text/plain; foo=BAR,baz=bizzle dizzle;BLING=bam;blong="boo";zump="zoo\"o"') req.should.not.be.form_data req.media_type_params.should.include 'foo' req.media_type_params['foo'].should.equal 'BAR' @@ -632,6 +632,8 @@ describe Rack::Request do req.media_type_params.should.not.include 'BLING' req.media_type_params.should.include 'bling' req.media_type_params['bling'].should.equal 'bam' + req.media_type_params['blong'].should.equal 'boo' + req.media_type_params['zump'].should.equal 'zoo\"o' end should "parse with junk before boundry" do |