class Aws::Json::Builder

Public Instance Methods

to_json(shape, params) click to toggle source

@param [Seahorse::Model::Shapes::Shape] shape @param [Hash] params @return [String<JSON>]

# File lib/aws-sdk-core/json/builder.rb, line 10
def to_json(shape, params)
  MultiJson.dump(format(shape, params))
end

Private Instance Methods

format(shape, value) click to toggle source

@param [Seahorse::Model::Shapes::Shape] shape @param [Object] value @return [Object]

# File lib/aws-sdk-core/json/builder.rb, line 48
def format(shape, value)
  case shape.type
  when 'structure' then structure(shape, value)
  when 'list'      then list(shape, value)
  when 'map'       then map(shape, value)
  when 'timestamp' then shape.format_time(value, 'unixTimestamp')
  when 'blob'      then Base64.strict_encode64(value.read)
  else value
  end
end
list(list, values) click to toggle source

@param [Seahorse::Model::Shapes::List] list @param [Array] values @return [Array]

# File lib/aws-sdk-core/json/builder.rb, line 32
def list(list, values)
  values.collect { |value| format(list.member, value) }
end
map(map, values) click to toggle source

@param [Seahorse::Model::Shapes::Map] map @param [Hash] values @return [Hash]

# File lib/aws-sdk-core/json/builder.rb, line 39
def map(map, values)
  values.each.with_object({}) do |(key, value), data|
    data[key] = format(map.value, value)
  end
end
structure(structure, values) click to toggle source

@param [Seahorse::Model::Shapes::Structure] structure @param [Hash] values @return [Hash]

# File lib/aws-sdk-core/json/builder.rb, line 19
def structure(structure, values)
  values.each.with_object({}) do |(key, value), data|
    if structure.member?(key) && !value.nil?
      member_shape = structure.member(key)
      name = member_shape.location_name || key
      data[name] = format(member_shape, value)
    end
  end
end