class SonarCookies::Cookie
Attributes
default_host[R]
domain[R]
expires[R]
name[R]
path[R]
raw[R]
value[R]
Public Class Methods
new(raw, uri)
click to toggle source
# File lib/sonar/cookies.rb, line 69 def initialize raw, uri @default_host = ::SonarConstants::DEFAULT_HOST uri ||= default_uri uri.host ||= default_host @raw, @options = raw.split(/[;,] */n, 2) @name, @value = parse_query(@raw, ';').to_a.first @options = parse_query(@options, ';') @domain = @options['domain'] || uri.host || default_host @domain = '.' << @domain unless @domain =~ /\A\./ @path = @options['path'] || uri.path.sub(/\/[^\/]*\Z/, '') (expires = @options['expires']) && (@expires = ::Time.parse(expires)) end
Public Instance Methods
<=>(cookie)
click to toggle source
# File lib/sonar/cookies.rb, line 116 def <=> cookie [name, path, domain.reverse] <=> [cookie.name, cookie.path, cookie.domain.reverse] end
dispose_for?(uri)
click to toggle source
# File lib/sonar/cookies.rb, line 103 def dispose_for? uri expired? ? false : valid?(uri) end
empty?()
click to toggle source
# File lib/sonar/cookies.rb, line 91 def empty? value.nil? || value.empty? end
expired?()
click to toggle source
# File lib/sonar/cookies.rb, line 99 def expired? expires && expires < ::Time.now.gmtime end
replaces?(cookie)
click to toggle source
# File lib/sonar/cookies.rb, line 87 def replaces? cookie [name.downcase, domain, path] == [cookie.name.downcase, cookie.domain, cookie.path] end
secure?()
click to toggle source
# File lib/sonar/cookies.rb, line 95 def secure? @options.has_key?('secure') end
valid?(uri = nil)
click to toggle source
# File lib/sonar/cookies.rb, line 107 def valid? uri = nil uri ||= default_uri uri.host ||= default_host (secure? ? uri.scheme == 'https' : true) && (uri.host =~ /#{::Regexp.escape(domain.sub(/\A\./, ''))}\Z/i) && (uri.path =~ /\A#{::Regexp.escape(path)}/) end
Private Instance Methods
default_uri()
click to toggle source
# File lib/sonar/cookies.rb, line 121 def default_uri ::URI.parse('//' << default_host << '/') end