lib/aws/api/shape_translator.rb
module Aws module Api class ShapeTranslator < BaseTranslator CONVERT_TYPES = { 'long' => 'integer', 'double' => 'float', } def translated if @properties['type'] == 'timestamp' @type_prefix = @options[:timestamp_format] end if @type_prefix @properties['type'] = "#{@type_prefix}_#{@properties['type']}" end shape = Seahorse::Model::Shapes::Shape.from_hash(@properties) shape.members = @members unless @members.nil? shape.keys = @keys if @keys shape end property :location property :serialized_name, from: :xmlname property :serialized_name, from: :location_name property :enum metadata :xmlnamespace metadata :xmlattribute metadata :payload metadata :wrapper ignore :member_order ignore :box ignore :streaming ignore :sensitive # validation properties ignore :pattern ignore :min_length ignore :max_length def set_shape_name(shape_name) if @options[:documentation] metadata = @properties['metadata'] ||= {} metadata['shape_name'] = shape_name end end def set_xmlnamespace(xmlns) metadata = @properties['metadata'] ||= {} metadata['xmlns_uri'] = xmlns['uri'] metadata['xmlns_prefix'] = xmlns['prefix'] if xmlns['prefix'] end def set_type(type) @properties['type'] = CONVERT_TYPES[type] || type end def set_flattened(state) @type_prefix = 'flat' if state end def set_keys(member) @keys = self.class.translate(member, @options) end # Structure shapes have a hash of members. Lists and maps have a # single member (with a type). def set_members(members) if members['type'].is_a?(String) @members = self.class.translate(members, @options) else @members = Seahorse::Model::Shapes::MemberHash.new members.each do |name, src| shape = self.class.translate(src, @options) shape.serialized_name ||= name @members[underscore(name)] = shape end end end end class InputShapeTranslator < ShapeTranslator property :required end class OutputShapeTranslator < ShapeTranslator ignore :required end end end