class Aws::ParamValidator
def structure(ref, values, errors, context)
def structure(ref, values, errors, context) # ensure the value is hash like return unless correct_type?(ref, values, errors, context) if ref.eventstream # input eventstream is provided from event signals values.each do |value| # each event is structure type case value[:message_type] when 'event' val = value.dup val.delete(:message_type) structure(ref.shape.member(val[:event_type]), val, errors, context) when 'error' # Error is unmodeled when 'exception' # Pending raise Aws::Errors::EventStreamParserError.new( ':exception event validation is not supported') end end else shape = ref.shape # ensure required members are present if @validate_required shape.required.each do |member_name| input_eventstream = ref.shape.member(member_name).eventstream && @input if values[member_name].nil? && !input_eventstream param = "#{context}[#{member_name.inspect}]" errors << "missing required parameter #{param}" end end end if @validate_required && shape.union if values.length > 1 errors << "multiple values provided to union at #{context} - must contain exactly one of the supported types: #{shape.member_names.join(', ')}" elsif values.length == 0 errors << "No values provided to union at #{context} - must contain exactly one of the supported types: #{shape.member_names.join(', ')}" end end # validate non-nil members values.each_pair do |name, value| unless value.nil? # :event_type is not modeled # and also needed when construct body next if name == :event_type if shape.member?(name) member_ref = shape.member(name) shape(member_ref, value, errors, context + "[#{name.inspect}]") else errors << "unexpected value at #{context}[#{name.inspect}]" end end end end end