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
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 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 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
timestamp(ref, value)
click to toggle source
# File lib/aws-sdk-core/json/builder.rb, line 58 def timestamp(ref, value) if ref['timestampFormat'] == 'iso8601' value.utc.iso8601 else value.to_i end end