class Typhoeus::Response::Header

This class represents the response header. It can be accessed like a hash. Values can be strings (normal case) or arrays of strings (for duplicates headers)

@api private

Public Class Methods

new(raw) click to toggle source

Create a new header.

@example Create new header.

Header.new(raw)

@param [ String ] raw The raw header.

Calls superclass method
# File lib/typhoeus/response/header.rb, line 19
def initialize(raw)
  super({})
  @raw = raw
  @sanitized = {}
  parse
end

Public Instance Methods

[](key) click to toggle source
# File lib/typhoeus/response/header.rb, line 26
def [](key)
  fetch(key) { @sanitized[key.to_s.downcase] }
end
parse() click to toggle source

Parses the raw header.

@example Parse header.

header.parse
# File lib/typhoeus/response/header.rb, line 34
def parse
  case @raw
  when Hash
    raw.each do |k, v|
      process_pair(k, v)
    end
  when String
    raw.split(/\r?\n(?!\s)/).each do |header|
      header.strip!
      next if header.empty? || header.start_with?( 'HTTP/' )
      process_line(header)
    end
  end
end

Private Instance Methods

process_line(header) click to toggle source

Processes line and saves the result.

@return [ void ]

# File lib/typhoeus/response/header.rb, line 54
def process_line(header)
  key, value = header.split(':', 2)
  process_pair(key.strip, (value ? value.strip.gsub(/\r?\n\s*/, ' ') : ''))
end
process_pair(key, value) click to toggle source

Sets key value pair for self and @sanitized.

@return [ void ]

# File lib/typhoeus/response/header.rb, line 62
def process_pair(key, value)
  set_value(key, value, self)
  @sanitized[key.downcase] = self[key]
end
raw() click to toggle source

Returns the raw header or empty string.

@example Return raw header.

header.raw

@return [ String ] The raw header.

# File lib/typhoeus/response/header.rb, line 89
def raw
  @raw || ''
end
set_default_proc_on(hash, default_proc) click to toggle source

Sets the default proc for the specified hash independent of the Ruby version.

@return [ void ]

# File lib/typhoeus/response/header.rb, line 96
def set_default_proc_on(hash, default_proc)
  if hash.respond_to?(:default_proc=)
    hash.default_proc = default_proc
  else
    hash.replace(Hash.new(&default_proc).merge(hash))
  end
end
set_value(key, value, hash) click to toggle source

Sets value for key in specified hash

@return [ void ]

# File lib/typhoeus/response/header.rb, line 70
def set_value(key, value, hash)
  current_value = hash[key]
  if current_value
    if current_value.is_a? Array
      current_value << value
    else
      hash[key] = [current_value, value]
    end
  else
    hash[key] = value
  end
end