class CookieJar::Jar
A cookie store for client side usage.
-
Enforces cookie validity rules
-
Returns just the cookies valid for a given URI
-
Handles expiration of cookies
-
Allows for persistence of cookie data (with or without session)
Public Class Methods
Create a new Jar
from an array of Cookie
objects. Expired cookies will still be added to the archive, and conflicting cookies will be overwritten by the last cookie in the array.
@param [Array<Cookie>] cookies array of cookie objects @return [CookieJar] a new CookieJar
instance
# File lib/cookiejar/jar.rb, line 178 def self.from_a(cookies) jar = new cookies.each do |cookie| jar.add_cookie cookie end jar end
Create a new Jar
from a JSON-backed hash
@param o [Hash] the expanded JSON object @return [CookieJar] a new CookieJar
instance
# File lib/cookiejar/jar.rb, line 163 def self.json_create(o) o = JSON.parse(o) if o.is_a? String o = o['cookies'] if o.is_a? Hash cookies = o.inject([]) do |result, cookie_json| result << (Cookie.json_create cookie_json) end from_a cookies end
Create a new empty Jar
# File lib/cookiejar/jar.rb, line 48 def initialize @domains = {} end
Public Instance Methods
Return an array of all cookie objects in the jar
@return [Array<Cookie>] all cookies. Includes any expired cookies which have not yet been removed with expire_cookies
# File lib/cookiejar/jar.rb, line 136 def to_a result = [] @domains.values.each do |paths| paths.values.each do |cookies| cookies.values.inject result, :<< end end result end
Return a JSON ‘object’ for the various data values. Allows for persistence of the cookie information
@param [Array] a options controlling output JSON text
(usually a State and a depth)
@return [String] JSON representation of object data
# File lib/cookiejar/jar.rb, line 152 def to_json(*a) { 'json_class' => self.class.name, 'cookies' => to_a.to_json(*a) }.to_json(*a) end
Protected Instance Methods
# File lib/cookiejar/jar.rb, line 301 def find_domain(host) @domains[host] || {} end
# File lib/cookiejar/jar.rb, line 285 def gather_header_values(http_header_value, &_block) result = [] if http_header_value.is_a? Array http_header_value.each do |value| result << yield(value) end elsif http_header_value.is_a? String result << yield(http_header_value) end result.compact end
# File lib/cookiejar/jar.rb, line 297 def to_uri(request_uri) (request_uri.is_a? URI) ? request_uri : (URI.parse request_uri) end