# File lib/aws-sdk-core/json/builder.rb, line 9 def initialize(rules) @rules = rules end
# File lib/aws-sdk-core/json/builder.rb, line 13 def to_json(params) Json.dump(format(@rules, params)) end
# File lib/aws-sdk-core/json/builder.rb, line 54 def encode(blob) Base64.strict_encode64(String === blob ? blob : blob.read) end
# 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
# 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
# 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
# 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
# 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