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