class Aws::Rest::Response::Headers

Public Class Methods

new(rules) click to toggle source

@param [Seahorse::Model::ShapeRef] rules

# File lib/aws-sdk-core/rest/response/headers.rb, line 9
def initialize(rules)
  @rules = rules
end

Public Instance Methods

apply(http_resp, target) click to toggle source

@param [Seahorse::Client::Http::Response] http_resp @param [Hash, Struct] target

# File lib/aws-sdk-core/rest/response/headers.rb, line 15
def apply(http_resp, target)
  headers = http_resp.headers
  @rules.shape.members.each do |name, ref|
    case ref.location
    when 'header' then extract_header_value(headers, name, ref, target)
    when 'headers' then extract_header_map(headers, name, ref, target)
    end
  end
end
cast_value(ref, value) click to toggle source
# File lib/aws-sdk-core/rest/response/headers.rb, line 31
def cast_value(ref, value)
  case ref.shape
  when StringShape then value
  when IntegerShape then value.to_i
  when FloatShape then value.to_f
  when BooleanShape then value == 'true'
  when TimestampShape
    if value =~ /\d+(\.\d*)/
      Time.at(value.to_f)
    else
      Time.parse(value)
    end
  else raise "unsupported shape #{ref.shape.class}"
  end
end
extract_header_map(headers, name, ref, data) click to toggle source
# File lib/aws-sdk-core/rest/response/headers.rb, line 47
def extract_header_map(headers, name, ref, data)
  data[name] = {}
  prefix = ref.location_name || ''
  headers.each do |header_name, header_value|
    if match = header_name.match(/^#{prefix}(.+)/i)
      data[name][match[1]] = header_value
    end
  end
end
extract_header_value(headers, name, ref, data) click to toggle source
# File lib/aws-sdk-core/rest/response/headers.rb, line 25
def extract_header_value(headers, name, ref, data)
  if headers.key?(ref.location_name)
    data[name] = cast_value(ref, headers[ref.location_name])
  end
end