Class: Aws::Rest::Response::Headers Private

Inherits:
Object
  • Object
show all
Includes:
Seahorse::Model::Shapes
Defined in:
lib/aws-sdk-core/rest/response/headers.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

API:

  • private

Instance Method Summary collapse

Constructor Details

#initialize(rules) ⇒ Headers

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Headers.

Parameters:

API:

  • private



15
16
17
# File 'lib/aws-sdk-core/rest/response/headers.rb', line 15

def initialize(rules)
  @rules = rules
end

Instance Method Details

#apply(http_resp, target) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

API:

  • private



21
22
23
24
25
26
27
28
29
# File 'lib/aws-sdk-core/rest/response/headers.rb', line 21

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) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/aws-sdk-core/rest/response/headers.rb', line 37

def cast_value(ref, value)
  value = extract_json_trait(value) if ref['jsonvalue']
  case ref.shape
  when StringShape then value.to_s
  when IntegerShape then value.to_i
  when FloatShape then Util.deserialize_number(value)
  when BooleanShape then value == 'true'
  when ListShape then
    case ref.shape.member.shape
    when StringShape then HeaderListParser.parse_string_list(value)
    when TimestampShape then HeaderListParser.parse_timestamp_list(value, ref.shape.member)
    else value.split(', ').map { |v| cast_value(ref.shape.member, v) }
    end
  when TimestampShape
    if value =~ /^\d+(\.\d*)/
      Time.at(value.to_f)
    elsif value =~ /^\d+$/
      Time.at(value.to_i)
    else
      begin
        Time.parse(value)
      rescue
        nil
      end
    end
  else raise "unsupported shape #{ref.shape.class}"
  end
end

#extract_header_map(headers, name, ref, data) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



66
67
68
69
70
71
72
73
74
# File 'lib/aws-sdk-core/rest/response/headers.rb', line 66

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) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



31
32
33
34
35
# File 'lib/aws-sdk-core/rest/response/headers.rb', line 31

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

#extract_json_trait(value) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



76
77
78
# File 'lib/aws-sdk-core/rest/response/headers.rb', line 76

def extract_json_trait(value)
  Aws::Json.load(Base64.decode64(value))
end