module VCR::Normalizers::Header
def convert_to_raw_strings(array)
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
def delete_header(key)
def delete_header(key) if key = header_key(key) @normalized_header_keys.delete key.downcase headers.delete key end end
def edit_header(key, value = nil)
def edit_header(key, value = nil) if key = header_key(key) value ||= yield headers[key] headers[key] = Array(value) end end
def get_header(key)
def get_header(key) key = header_key(key) headers[key] if key end
def header_key(key)
def header_key(key) key = @normalized_header_keys[key.downcase] key if headers.has_key? key end
def initialize(*args)
def initialize(*args) super normalize_headers end
def normalize_headers
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