Class: Rack::Bacoo::CookieAttributesParser

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

Constant Summary collapse

DEFAULTS =
{
  cookie_name: "rack-bacoo",
  path: "/",
  max_age: 24 * 60 * 60, # 24 hours
  secure: true,
  http_only: true,
  same_site: "Lax"
}.freeze

Class Method Summary collapse

Class Method Details

.call(cookie_attributes) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rack/bacoo/cookie_attributes_parser.rb', line 15

def self.call(cookie_attributes)
  cookie_attributes.each do |pair|
    case pair
    in [:secure, nil] | [:secure, false]
      raise ArgumentError, "secure must be true"
    in [:http_only, nil] | [:http_only, false]
      raise ArgumentError, "http_only must be true"
    in [:httponly, nil] | [:httponly, false]
      raise ArgumentError, "httponly must be true"
    in [:same_site, nil] | [:same_site, false]
      raise ArgumentError, "same_site must be either lax or strict"
    in [:same_site, val] if val.to_s.downcase == "none"
      raise ArgumentError, "same_site must be either lax or strict"
    else
    end
  end

  DEFAULTS.merge(cookie_attributes)
end