Sha256: efde3c71de7655bf1075b4e67aad4e0979237ee256cbbd24adcff1a5c7dea900
Contents?: true
Size: 1.68 KB
Versions: 2
Compression:
Stored size: 1.68 KB
Contents
require 'multi_json' require 'base64' module Aws module Json class Builder include Seahorse::Model::Shapes include TimestampFormatter # @param [Seahorse::Model::Shapes::Shape] rules def initialize(rules) @rules = rules end # @param [Hash] params # @return [Hash] def build(params) structure(@rules, params) end # @param [Hash] params # @return [String<JSON>] def to_json(params) MultiJson.dump(build(params)) end class << self # @param [Seahorse::Model::Shapes::Shape] rules # @param [Hash] params # @return [String<JSON>] def to_json(rules, params) new(rules).to_json(params) end alias build to_json end private def structure(shape, values) data = {} values.each do |key, value| if member_shape = shape.members[key] data[member_shape.serialized_name] = member(member_shape, value) end end data end def list(shape, values) values.map { |value| member(shape.members, value) } end def map(shape, values) data = {} values.each do |key, value| data[key] = member(shape.members, value) end data end def member(shape, value) case shape when StructureShape then structure(shape, value) when ListShape then list(shape, value) when MapShape then map(shape, value) when TimestampShape then timestamp(shape, value.utc) when BlobShape then Base64.strict_encode64(value) else value end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
aws-sdk-core-2.0.0.rc2 | lib/aws/json/builder.rb |
aws-sdk-core-2.0.0.rc1 | lib/aws/json/builder.rb |