class Rack::RequestDecompressor
Constants
- VERSION
Public Class Methods
new(app)
click to toggle source
# File lib/rack/request_decompressor.rb, line 8 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/request_decompressor.rb, line 12 def call(env) req = Rack::Request.new(env) env['rack.input'] = decompress(req.body, env['HTTP_CONTENT_ENCODING']) @app.call(env) end
decompress(body, method)
click to toggle source
# File lib/rack/request_decompressor.rb, line 18 def decompress(body, method) case method when 'gzip' Zlib::GzipReader.wrap(StringIO.new body.read) when 'deflate' StringIO.new(Zlib::Inflate.new(-Zlib::MAX_WBITS).inflate(body.read)) when nil body else raise Rack::UnknownCompressMethod.new("unknown compressing method '#{method}'.") end end