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 value.to_i
  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