class SonarCookies

Public Class Methods

new() click to toggle source
# File lib/sonar/cookies.rb, line 4
def initialize
  @jar = {}
end

Public Instance Methods

[](name) click to toggle source
# File lib/sonar/cookies.rb, line 14
def [] name
  cookies = to_hash
  cookies[name] && cookies[name].value
end
[]=(name, value) click to toggle source
# File lib/sonar/cookies.rb, line 19
def []= name, value
  persist '%s=%s' % [name, ::Rack::Utils.escape(value)]
end
clear() click to toggle source
# File lib/sonar/cookies.rb, line 27
def clear
  jar nil, []
end
delete(name) click to toggle source
# File lib/sonar/cookies.rb, line 23
def delete name
  jar nil, jar(nil).reject { |c| c.name == name }
end
jar(uri, cookies = nil) click to toggle source
# File lib/sonar/cookies.rb, line 8
def jar uri, cookies = nil
  host = (((uri && uri.host) || ::SonarConstants::DEFAULT_HOST).split('.')[-2..-1]||[]).join('.').downcase
  @jar[host] = cookies if cookies
  @jar[host] ||= []
end
persist(raw_cookies, uri = nil) click to toggle source
# File lib/sonar/cookies.rb, line 37
def persist raw_cookies, uri = nil
  return unless raw_cookies.is_a?(String)

  # before adding new cookies, lets cleanup expired ones
  jar uri, jar(uri).reject { |c| c.expired? }

  raw_cookies = raw_cookies.strip.split("\n").reject { |c| c.empty? }

  raw_cookies.each do |raw_cookie|
    cookie = Cookie.new(raw_cookie, uri)
    cookie.valid?(uri) || next
    jar(uri, jar(uri).reject { |existing_cookie| cookie.replaces? existing_cookie })
    jar(uri) << cookie
  end
  jar(uri).sort!
end
to_hash(uri = nil) click to toggle source
# File lib/sonar/cookies.rb, line 58
def to_hash uri = nil
  jar(uri).inject({}) do |cookies, cookie|
    cookies.merge((uri ? cookie.dispose_for?(uri) : true) ? {cookie.name => cookie} : {})
  end
end
to_s(uri = nil) click to toggle source
# File lib/sonar/cookies.rb, line 54
def to_s uri = nil
  to_hash(uri).values.map { |c| c.raw }.join(';')
end