Class WebAgent::Cookie
In: lib/httpclient/cookie.rb
Parent: Object

Methods

discard?   domain_orig?   flag   join_quotedstr   match?   new   override?   parse   path_orig?   secure?   set_flag   use?  

Included Modules

CookieUtils

Constants

USE = 1
SECURE = 2
DOMAIN = 4
PATH = 8
DISCARD = 16
OVERRIDE = 32
OVERRIDE_OK = 32

Attributes

discard  [W] 
domain  [RW] 
domain_orig  [W] 
expires  [RW] 
name  [RW] 
override  [W] 
path  [RW] 
path_orig  [W] 
secure  [W] 
url  [RW] 
use  [W] 
value  [RW] 

Public Class methods

[Source]

# File lib/httpclient/cookie.rb, line 73
    def initialize()
      @name = @value = @domain = @path = nil
      @expires = nil
      @url = nil
      @use = @secure = @discard = @domain_orig = @path_orig = @override = nil
    end

Public Instance methods

[Source]

# File lib/httpclient/cookie.rb, line 80
    def discard?
      @discard
    end

[Source]

# File lib/httpclient/cookie.rb, line 92
    def domain_orig?
      @domain_orig
    end

[Source]

# File lib/httpclient/cookie.rb, line 104
    def flag
      flg = 0
      flg += USE  if @use
      flg += SECURE  if @secure
      flg += DOMAIN  if @domain_orig
      flg += PATH  if @path_orig
      flg += DISCARD if @discard
      flg += OVERRIDE if @override
      flg
    end

[Source]

# File lib/httpclient/cookie.rb, line 137
    def join_quotedstr(array, sep)
      ret = Array.new()
      old_elem = nil
      array.each{|elem|
        if (elem.scan(/"/).length % 2) == 0
          if old_elem
            old_elem << sep << elem
          else
            ret << elem
            old_elem = nil
          end  
        else
          if old_elem
            old_elem << sep << elem
            ret << old_elem
            old_elem = nil
          else
            old_elem = elem.dup
          end
        end
      }
      ret
    end

[Source]

# File lib/httpclient/cookie.rb, line 125
    def match?(url)
      domainname = url.host
      if (!domainname ||
          !domain_match(domainname, @domain) ||
          (@path && !head_match?(@path, url.path)) ||
          (@secure && (url.scheme != 'https')) )
        return false
      else
        return true
      end
    end

[Source]

# File lib/httpclient/cookie.rb, line 100
    def override?
      @override
    end

[Source]

# File lib/httpclient/cookie.rb, line 161
    def parse(str, url)
      @url = url
      # TODO: should not depend on join_quotedstr. scan with escape like CSV.
      cookie_elem = str.split(/;/)
      cookie_elem = join_quotedstr(cookie_elem, ';')
      cookie_elem -= [""] # del empty elements, a cookie might included ";;"
      first_elem = cookie_elem.shift
      if first_elem !~ /([^=]*)(\=(.*))?/
        return
        ## raise ArgumentError 'invalid cookie value'
      end
      @name = $1.strip
      @value = normalize_cookie_value($3)
      cookie_elem.each{|pair|
        key, value = pair.split(/=/, 2)  ## value may nil
        key.strip!
        value = normalize_cookie_value(value)
        case key.downcase
        when 'domain'
          @domain = value
        when 'expires'
          @expires = nil
          begin
            @expires = Time.parse(value).gmtime() if value
          rescue ArgumentError
          end
        when 'path'
          @path = value
        when 'secure'
          @secure = true  ## value may nil, but must 'true'.
        else
          ## ignore
        end
      }
    end

[Source]

# File lib/httpclient/cookie.rb, line 96
    def path_orig?
      @path_orig
    end

[Source]

# File lib/httpclient/cookie.rb, line 88
    def secure?
      @secure
    end

[Source]

# File lib/httpclient/cookie.rb, line 115
    def set_flag(flag)
      flag = flag.to_i
      @use = true      if flag & USE > 0
      @secure = true   if flag & SECURE > 0
      @domain_orig = true if flag & DOMAIN > 0
      @path_orig = true if flag & PATH > 0
      @discard  = true if flag & DISCARD > 0
      @override = true if flag & OVERRIDE > 0
    end

[Source]

# File lib/httpclient/cookie.rb, line 84
    def use?
      @use
    end

[Validate]