module VCR::Normalizers::Header

@private

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/vcr/structs.rb, line 99
def initialize(*args)
  super
  normalize_headers
end

Private Instance Methods

convert_to_raw_strings(array) click to toggle source
# File lib/vcr/structs.rb, line 148
def convert_to_raw_strings(array)
  # Ensure the values are raw strings.
  # Apparently for Paperclip uploads to S3, headers
  # get serialized with some extra stuff which leads
  # to a seg fault. See this issue for more info:
  # https://github.com/myronmarston/vcr/issues#issue/39
  array.map do |v|
    case v
      when String; String.new(v)
      when Array; convert_to_raw_strings(v)
      else v
    end
  end
end
delete_header(key) click to toggle source
# File lib/vcr/structs.rb, line 141
def delete_header(key)
  if key = header_key(key)
    @normalized_header_keys.delete key.downcase
    headers.delete key
  end
end
edit_header(key, value = nil) { |headers| ... } click to toggle source
# File lib/vcr/structs.rb, line 134
def edit_header(key, value = nil)
  if key = header_key(key)
    value ||= yield headers[key]
    headers[key] = Array(value)
  end
end
get_header(key) click to toggle source
# File lib/vcr/structs.rb, line 129
def get_header(key)
  key = header_key(key)
  headers[key] if key
end
header_key(key) click to toggle source
# File lib/vcr/structs.rb, line 124
def header_key(key)
  key = @normalized_header_keys[key.downcase]
  key if headers.has_key? key
end
normalize_headers() click to toggle source
# File lib/vcr/structs.rb, line 106
def normalize_headers
  new_headers = {}
  @normalized_header_keys = Hash.new {|h,k| k }

  headers.each do |k, v|
    val_array = case v
      when Array then v
      when nil then []
      else [v]
    end

    new_headers[String.new(k)] = convert_to_raw_strings(val_array)
    @normalized_header_keys[k.downcase] = k
  end if headers

  self.headers = new_headers
end