Class: TaintedLove::Replacer::ReplaceRackBuilder::TaintedLoveRackMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/tainted_love/replacer/replace_rack_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ TaintedLoveRackMiddleware

Returns a new instance of TaintedLoveRackMiddleware.



19
20
21
# File 'lib/tainted_love/replacer/replace_rack_builder.rb', line 19

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



23
24
25
# File 'lib/tainted_love/replacer/replace_rack_builder.rb', line 23

def call(env)
  @app.call(taint_env(env))
end

#taint_env(env) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/tainted_love/replacer/replace_rack_builder.rb', line 27

def taint_env(env)
  uppercase_keys = env.to_h.keys.select { |k| k[/[A-Z]/] }

  values = {}
  uppercase_keys.each do |key|
    new_key = key.dup.taint
    new_value = env[key].dup.taint

    TaintedLove.tag(new_key, source: "Key #{key.inspect} Rack env", value: new_key)
    TaintedLove.tag(new_value, source: "Rack env[#{key.inspect}]", value: new_value)

    values[new_key] = new_value

    env.delete(key)
  end

  env.merge!(values)

  env
end