class Aws::Plugins::SQSMd5s::Handler
def md5_of_message_attributes(message_attributes)
def md5_of_message_attributes(message_attributes) encoded = { } message_attributes.each do |name, attribute| name = name.to_s encoded[name] = String.new data_type_without_label = DATA_TYPE.match(attribute[:data_type])[1] encoded[name] << encode_length_and_bytes(name) << encode_length_and_bytes(attribute[:data_type]) << [TRANSPORT_TYPE_ENCODINGS[data_type_without_label]].pack('C'.freeze) if attribute[:string_value] != nil encoded[name] << encode_length_and_string(attribute[:string_value]) elsif attribute[:binary_value] != nil encoded[name] << encode_length_and_bytes(attribute[:binary_value]) end end buffer = encoded.keys.sort.reduce(String.new) do |string, name| string << encoded[name] end OpenSSL::Digest::MD5.hexdigest(buffer) end