Sha256: e39d2de09b5d67486946e83bc593b2b3ca8fe58b335d282f52001656102bf747
Contents?: true
Size: 1.72 KB
Versions: 109
Compression:
Stored size: 1.72 KB
Contents
require 'base64' module Aws module Json class Builder include Seahorse::Model::Shapes def initialize(rules) @rules = rules end def to_json(params) Json.dump(format(@rules, params)) end alias serialize to_json private 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 def list(ref, values) member_ref = ref.shape.member values.collect { |value| format(member_ref, value) } end 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 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 def encode(blob) Base64.strict_encode64(String === blob ? blob : blob.read) end 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 end end end
Version data entries
109 entries across 109 versions & 1 rubygems