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