Class: WEBrick::Cookie

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, value) ⇒ Cookie

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

#commentObject

Returns the value of attribute comment.



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

def comment
  @comment
end

#domainObject

Returns the value of attribute domain.



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

def domain
  @domain
end

#max_ageObject

Returns the value of attribute max_age.



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

def max_age
  @max_age
end

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

#pathObject

Returns the value of attribute path.



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

def path
  @path
end

#secureObject

Returns the value of attribute secure.



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

def secure
  @secure
end

#valueObject

Returns the value of attribute value.



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

def value
  @value
end

#versionObject

Returns the value of attribute version.



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

def version
  @version
end

Class Method Details

.parse(str) ⇒ Object

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

.parse_set_cookies(str) ⇒ Object



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

#expiresObject



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

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

#expires=(t) ⇒ Object



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

#to_sObject



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