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