Class: Mechanize::CookieStore::Redis

Inherits:
Object
  • Object
show all
Defined in:
lib/mechanize/cookie_store/redis.rb

Constant Summary collapse

DEFAULT_NAMESPACE =
"mechanize_cookies".freeze

Class Method Summary collapse

Class Method Details

.all(options = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/mechanize/cookie_store/redis.rb', line 16

def self.all(options = {})
  normalized_keys(options).each_with_object([]) do |key, cookies|
    serialized_cookie = connection.get(key)

    if serialized_cookie
      cookie = Marshal.load(serialized_cookie)

      unless cookie_expired?(cookie)
        cookies << cookie
      end
    end
  end
end

.connectionObject



7
8
9
10
11
12
13
14
# File 'lib/mechanize/cookie_store/redis.rb', line 7

def self.connection
  return @store_connection if @store_connection

  namespace = Mechanize::CookieStore.connection_params[:namespace] || DEFAULT_NAMESPACE
  redis_connection  = ::Redis.new(Mechanize::CookieStore.connection_params)

  @store_connection = ::Redis::Namespace.new(namespace, redis: redis_connection)
end

Returns:

  • (Boolean)


38
39
40
41
42
# File 'lib/mechanize/cookie_store/redis.rb', line 38

def self.cookie_expired?(cookie)
  cookie.expires && cookie.expires < Time.now.utc ||
    cookie.created_at && cookie.max_age &&
    cookie.created_at + cookie.max_age < Time.now.utc
end

.normalized_keys(options = {}) ⇒ Object



44
45
46
47
48
49
50
# File 'lib/mechanize/cookie_store/redis.rb', line 44

def self.normalized_keys(options = {})
  domain = options[:domain] || "*"
  path   = options[:path]   || "*"
  name   = options[:name]   || "*"

  connection.keys("#{domain}:#{path}:#{name}")
end

.save(cookie) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/mechanize/cookie_store/redis.rb', line 30

def self.save(cookie)
  return if cookie_expired?(cookie)

  key = "#{cookie.domain}:#{cookie.path}:#{cookie.name}"

  connection.set(key, Marshal.dump(cookie)) == "OK"
end