Class: Rack::CleanCookies::Middleware

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

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {verbose: false}) ⇒ Middleware

Returns a new instance of Middleware.



27
28
29
30
# File 'lib/rack/cleancookies.rb', line 27

def initialize(app, options={verbose: false})
  @app = app
  @options = options
end

Instance Method Details

#call(env) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/rack/cleancookies.rb', line 32

def call(env)
  if env['HTTP_COOKIE']
    clean_cookies, dirty_cookies = [], []

    # Split cookies into clean and dirty
    env['HTTP_COOKIE'].split(/[;,] */n).each do |cookie|
      if CleanCookies::clean?(cookie)
        clean_cookies << cookie
      else
        dirty_cookies << cookie
      end
    end

    # Keep only clean cookies
    env['HTTP_COOKIE'] = clean_cookies.join('; ')

    # Inform about dropped dirty cookies
    if !dirty_cookies.empty? && @options[:verbose]
      env['rack.errors'].puts "Ignoring dirty cookies: #{dirty_cookies.inspect}"
    end
  end

  # Carry on
  @app.call(env)
end