lib/rack/insight/redirect_interceptor.rb
module Rack::Insight
class RedirectInterceptor
include Render
def initialize(app)
@app = app
end
def call(env)
status, headers, body = @app.call(env)
@response = Rack::Response.new(body, status, headers)
if @response.redirect? && env["rack-insight.intercept_redirects"]
intercept_redirect
end
@response.to_a
end
def intercept_redirect
new_body = render_template("redirect", :redirect_to => @response.location)
new_headers = { "Content-Type" => "text/html", "Content-Length" => new_body.size.to_s }
@response = Rack::Response.new(new_body, 200, new_headers)
end
end
end