class Aws::ParamValidator
def shape(ref, value, errors, context)
def shape(ref, value, errors, context) case ref.shape when StructureShape then structure(ref, value, errors, context) when ListShape then list(ref, value, errors, context) when MapShape then map(ref, value, errors, context) when DocumentShape then document(ref, value, errors, context) when StringShape unless value.is_a?(String) errors << expected_got(context, "a String", value) end when IntegerShape unless value.is_a?(Integer) errors << expected_got(context, "an Integer", value) end when FloatShape unless value.is_a?(Float) errors << expected_got(context, "a Float", value) end when TimestampShape unless value.is_a?(Time) errors << expected_got(context, "a Time object", value) end when BooleanShape unless [true, false].include?(value) errors << expected_got(context, "true or false", value) end when BlobShape unless value.is_a?(String) if streaming_input?(ref) unless io_like?(value, _require_size = false) errors << expected_got( context, "a String or IO like object that supports read and rewind", value ) end elsif !io_like?(value, _require_size = true) errors << expected_got( context, "a String or IO like object that supports read, rewind, and size", value ) end end else raise "unhandled shape type: #{ref.shape.class.name}" end end