class Rack::Radar::RackRadarCookies::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/rack/radar/cookies.rb, line 71
def initialize raw, uri
  @default_host = RACK_RADAR__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/rack/radar/cookies.rb, line 117
def <=> cookie
  [name, path, domain.reverse] <=> [cookie.name, cookie.path, cookie.domain.reverse]
end
dispose_for?(uri) click to toggle source
# File lib/rack/radar/cookies.rb, line 105
def dispose_for? uri
  expired? ? false : valid?(uri)
end
empty?() click to toggle source
# File lib/rack/radar/cookies.rb, line 93
def empty?
  value.nil? || value.empty?
end
expired?() click to toggle source
# File lib/rack/radar/cookies.rb, line 101
def expired?
  expires && expires < ::Time.now.gmtime
end
replaces?(cookie) click to toggle source
# File lib/rack/radar/cookies.rb, line 89
def replaces? cookie
  [name.downcase, domain, path] == [cookie.name.downcase, cookie.domain, cookie.path]
end
secure?() click to toggle source
# File lib/rack/radar/cookies.rb, line 97
def secure?
  @options.has_key?('secure')
end
valid?(uri = nil) click to toggle source
# File lib/rack/radar/cookies.rb, line 109
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/rack/radar/cookies.rb, line 122
def default_uri
  ::URI.parse('//' << default_host << '/')
end