class Aws::Json::Builder

Public Class Methods

new(rules) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 11
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 15
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 56
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 45
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 33
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 38
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 22
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 60
def timestamp(ref, value)
  case ref['timestampFormat'] || ref.shape['timestampFormat']
  when 'iso8601' then value.utc.iso8601
  when 'rfc822' then value.utc.httpdate
  else
    # rest-json and jsonrpc default to unixTimestamp
    value.to_i
  end
end