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: client.rb
    path of file: ./repos/metasploit-framework/lib/metasploit/framework/afp
    
    the code of the file until where you have to start completion: # -*- coding: binary -*-
module Metasploit
  module Framework
    module AFP
      module Client

        def next_id
          @request_id ||= -1
          @request_id += 1

          @request_id
        end

        def get_info
          packet =  "\00"    # Flag: Request
          packet << "\x03"   # Command: FPGetSrvrInfo
          packet << [next_id].pack('n') # requestID
          packet << "\x00\x00\x00\x00" # Data
    
        def no_user_authent_login
          packet =  "\00"              # Flag: Request
          packet << "\x02"             # Command: DSICommand
          packet << [next_id].pack('n')    # requestID
          packet << "\x00\x00\x00\x00" # Data offset
          packet << "\x00\x00\x00\x18" # Length (24)
          packet << "\x00\x00\x00\x00" # Reserved
          packet << "\x12"             # AFPCommand: FPLogin (18)
          packet << "\x06\x41\x46\x50\x33\x2e\x31" #AFP3.1
          packet << "\x0f\x4e\x6f\x20\x55\x73\x65\x72\x20\x41\x75\x74\x68\x65\x6e\x74" #UAM: No User Authent

          sock.put(packet)

          begin
            response = sock.timed_read(1024, self.login_timeout)
          rescue Timeout::Error
            raise RuntimeError, "AFP Login timeout (AFP server delay response for 20 - 22 seconds after 7 incorrect logins)"
          end