mjackson / rack-accept

HTTP Accept* for Ruby/Rack
http://mjackson.github.com/rack-accept
47 stars 16 forks source link

Accessing request params via Rack::Accept::Request #10

Open sshaw opened 12 years ago

sshaw commented 12 years ago

Rack::Accept::Request overrides media_type but changes the return value. Instead of returning the request's content-type -less charset, like its parent, it returns an accept header (as an instance of MediaType). This prevents one from retrieving POST params:

[Rack::Accept::Request, Rack::Request].each do |klass|
  env = {    
    "rack.input"     => StringIO.new("a=b+c"), 
    "CONTENT_TYPE"   => "multipart/form-data",
    "REQUEST_METHOD" => "POST"
  }

  r = klass.new(env)  
  puts "#{klass.name}#POST: #{r.POST}"
  puts "#{klass.name}#media_type: #{r.media_type}"   
  puts "*" * 10
end

Prints:

Rack::Accept::Request#POST: {}
Rack::Accept::Request#media_type: Accept: 
**********
Rack::Request#POST: {"a"=>"b c"}
Rack::Request#media_type: multipart/form-data
**********

Maybe it's better to call the method accept