Class: WEBrick::Cookie

Inherits:
Object show all
Defined in:
lib/webrick/cookie.rb

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Cookie) initialize(name, value)

attr_accessor :comment_url, :discard, :port



23
24
25
26
27
28
29
30
# File 'lib/webrick/cookie.rb', line 23

def initialize(name, value)
  @name = name
  @value = value
  @version = 0     # Netscape Cookie

  @domain = @path = @secure = @comment = @max_age =
  @expires = @comment_url = @discard = @port = nil
end

Instance Attribute Details

- (Object) comment

Returns the value of attribute comment



20
21
22
# File 'lib/webrick/cookie.rb', line 20

def comment
  @comment
end

- (Object) domain

Returns the value of attribute domain



19
20
21
# File 'lib/webrick/cookie.rb', line 19

def domain
  @domain
end

- (Object) max_age

Returns the value of attribute max_age



20
21
22
# File 'lib/webrick/cookie.rb', line 20

def max_age
  @max_age
end

- (Object) name (readonly)

Returns the value of attribute name



17
18
19
# File 'lib/webrick/cookie.rb', line 17

def name
  @name
end

- (Object) path

Returns the value of attribute path



19
20
21
# File 'lib/webrick/cookie.rb', line 19

def path
  @path
end

- (Object) secure

Returns the value of attribute secure



19
20
21
# File 'lib/webrick/cookie.rb', line 19

def secure
  @secure
end

- (Object) value

Returns the value of attribute value



18
19
20
# File 'lib/webrick/cookie.rb', line 18

def value
  @value
end

- (Object) version

Returns the value of attribute version



18
19
20
# File 'lib/webrick/cookie.rb', line 18

def version
  @version
end

Class Method Details

+ (Object) parse(str)

Cookie::parse()

It parses Cookie field sent from the user agent.


55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/webrick/cookie.rb', line 55

def self.parse(str)
  if str
    ret = []
    cookie = nil
    ver = 0
    str.split(/[;,]\s+/).each{|x|
      key, val = x.split(/=/,2)
      val = val ? HTTPUtils::dequote(val) : ""
      case key
      when "$Version"; ver = val.to_i
      when "$Path";    cookie.path = val
      when "$Domain";  cookie.domain = val
      when "$Port";    cookie.port = val
      else
        ret << cookie if cookie
        cookie = self.new(key, val)
        cookie.version = ver
      end
    }
    ret << cookie if cookie
    ret
  end
end


79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/webrick/cookie.rb', line 79

def self.parse_set_cookie(str)
  cookie_elem = str.split(/;/)
  first_elem = cookie_elem.shift
  first_elem.strip!
  key, value = first_elem.split(/=/, 2)
  cookie = new(key, HTTPUtils.dequote(value))
  cookie_elem.each{|pair|
    pair.strip!
    key, value = pair.split(/=/, 2)
    if value
      value = HTTPUtils.dequote(value.strip)
    end
    case key.downcase
    when "domain"  then cookie.domain  = value
    when "path"    then cookie.path    = value
    when "expires" then cookie.expires = value
    when "max-age" then cookie.max_age = Integer(value)
    when "comment" then cookie.comment = value
    when "version" then cookie.version = Integer(value)
    when "secure"  then cookie.secure = true
    end
  }
  return cookie
end

+ (Object) parse_set_cookies(str)



104
105
106
107
108
# File 'lib/webrick/cookie.rb', line 104

def self.parse_set_cookies(str)
  return str.split(/,(?=[^;,]*=)|,$/).collect{|c|
    parse_set_cookie(c)
  }
end

Instance Method Details

- (Object) expires



36
37
38
# File 'lib/webrick/cookie.rb', line 36

def expires
  @expires && Time.parse(@expires)
end

- (Object) expires=(t)



32
33
34
# File 'lib/webrick/cookie.rb', line 32

def expires=(t)
  @expires = t && (t.is_a?(Time) ? t.httpdate : t.to_s)
end

- (Object) to_s



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/webrick/cookie.rb', line 40

def to_s
  ret = ""
  ret << @name << "=" << @value
  ret << "; " << "Version=" << @version.to_s if @version > 0
  ret << "; " << "Domain="  << @domain  if @domain
  ret << "; " << "Expires=" << @expires if @expires
  ret << "; " << "Max-Age=" << @max_age.to_s if @max_age
  ret << "; " << "Comment=" << @comment if @comment
  ret << "; " << "Path="    << @path if @path
  ret << "; " << "Secure"   if @secure
  ret
end