require 'delegate'
require 'webrick/cookie'
class WEBrick::Cookie
def expired?
!!expires && expires < Time.now
end
end
module Anemone
class CookieStore < DelegateClass(Hash)
def initialize(cookies = nil)
@cookies = {}
cookies.each { |name, value| @cookies[name] = WEBrick::Cookie.new(name, value) } if cookies
super(@cookies)
end
def merge!(set_cookie_str)
begin
cookie_hash = WEBrick::Cookie.parse_set_cookies(set_cookie_str).inject({}) do |hash, cookie|
hash[cookie.name] = cookie if !!cookie
hash
end
@cookies.merge! cookie_hash
rescue
end
end
def to_s
@cookies.values.reject { |cookie| cookie.expired? }.map { |cookie| "#{cookie.name}=#{cookie.value}" }.join(';')
end
end
end