class Cucumber::Formatter::MessageBuilder

def attach(src, media_type, filename)

def attach(src, media_type, filename)
  attachment_data = {
    test_step_id: @current_test_step_id,
    test_case_started_id: @current_test_case_started_id,
    media_type: media_type,
    file_name: filename
  }
  if media_type.start_with?('text/')
    attachment_data[:content_encoding] = Cucumber::Messages::AttachmentContentEncoding::IDENTITY
    attachment_data[:body] = src
  else
    body = src.respond_to?(:read) ? src.read : src
    attachment_data[:content_encoding] = Cucumber::Messages::AttachmentContentEncoding::BASE64
    attachment_data[:body] = Base64.strict_encode64(body)
  end
  message = Cucumber::Messages::Envelope.new(
    attachment: Cucumber::Messages::Attachment.new(**attachment_data)
  )
  output_envelope(message)
end