Class: Rack::Easou::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/easou/middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, stdout = STDOUT) ⇒ Middleware



5
6
7
8
# File 'lib/rack/easou/middleware.rb', line 5

def initialize(app, stdout=STDOUT)
  @app = app
  @logger = defined?(Rails.logger) ? Rails.logger : Logger.new(stdout)
end

Instance Method Details

#call(env) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/rack/easou/middleware.rb', line 10

def call(env)
  # calling env.dup here prevents bad things from happening
  request = Rack::Request.new(env.dup)

  # calling request.params is sufficient to trigger the error see
  # https://github.com/rack/rack/issues/337#issuecomment-46453404
  request.params
  @app.call(env)

# Rescue from that specific ArgumentError
rescue ArgumentError => e
  raise unless e.message =~ /invalid %-encoding/
  error_response
end