class Aws::Json::Builder

Public Class Methods

new(rules) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 9
def initialize(rules)
  @rules = rules
end

Public Instance Methods

serialize(params)
Alias for: to_json
to_json(params) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 13
def to_json(params)
  Json.dump(format(@rules, params))
end
Also aliased as: serialize

Private Instance Methods

encode(blob) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 54
def encode(blob)
  Base64.strict_encode64(String === blob ? blob : blob.read)
end
format(ref, value) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 43
def format(ref, value)
  case ref.shape
  when StructureShape then structure(ref, value)
  when ListShape      then list(ref, value)
  when MapShape       then map(ref, value)
  when TimestampShape then timestamp(ref, value)
  when BlobShape      then encode(value)
  else value
  end
end
list(ref, values) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 31
def list(ref, values)
  member_ref = ref.shape.member
  values.collect { |value| format(member_ref, value) }
end
map(ref, values) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 36
def map(ref, values)
  value_ref = ref.shape.value
  values.each.with_object({}) do |(key, value), data|
    data[key] = format(value_ref, value)
  end
end
structure(ref, values) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 20
def structure(ref, values)
  shape = ref.shape
  values.each_pair.with_object({}) do |(key, value), data|
    if shape.member?(key) && !value.nil?
      member_ref = shape.member(key)
      member_name = member_ref.location_name || key
      data[member_name] = format(member_ref, value)
    end
  end
end
timestamp(ref, value) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 58
def timestamp(ref, value)
  if ref['timestampFormat'] == 'iso8601'
    value.utc.iso8601
  else
    value.to_i
  end
end