Sha256: bab5471b61a74474ee781b0ee19cd5dc0c2d15157ba33113a2f349d1b79e2d3e
Contents?: true
Size: 1.27 KB
Versions: 3
Compression:
Stored size: 1.27 KB
Contents
module FlipFab class CookiePersistence < FlipFab::Persistence COOKIE_PATH = '/' COOKIE_DURATION_MONTHS = 12 # See: https://github.com/rails/rails/blob/b1124a2ac88778c0feb0157ac09367cbd204bf01/actionpack/lib/action_dispatch/middleware/cookies.rb#L214 DOMAIN_REGEXP = /[^.]*\.([^.]*|..\...|...\...)$/ def initialize feature_name, context super end def read value.to_sym unless value.nil? end def write state cookie_domain = ".#{top_level_domain}" unless top_level_domain.nil? context.response.set_cookie key, { value: state, expires: cookie_expiration, domain: cookie_domain, path: COOKIE_PATH, } end private def key "flip_fab.#{feature_name}" end def value @value ||= context.request.cookies[key] end # See: https://github.com/rails/rails/blob/b1124a2ac88778c0feb0157ac09367cbd204bf01/actionpack/lib/action_dispatch/middleware/cookies.rb#L286-L294 def top_level_domain if (host !~ /^[\d.]+$/) && (host =~ DOMAIN_REGEXP) $& end end def cookie_expiration (Time.now.utc.to_datetime >> COOKIE_DURATION_MONTHS).to_time end def host context.request.host end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
flip_fab-1.0.1 | lib/flip_fab/cookie_persistence.rb |
flip_fab-1.0.0 | lib/flip_fab/cookie_persistence.rb |
flip_fab-0.0.1 | lib/flip_fab/cookie_persistence.rb |