class Aws::Json::Builder

Public Class Methods

new(rules, _options = {}) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 11
def initialize(rules, _options = {})
  @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 63
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 51
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)
  when FloatShape     then Util.serialize_number(value)
  else value
  end
end
list(ref, values) click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 35
def list(ref, values)
  return nil if values.nil?

  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 42
def map(ref, values)
  return nil if values.nil?

  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)
  return nil if values.nil?

  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 67
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