module CGI::QueryExtension

def initialize_query()

Reads query parameters in the @params field, and cookies into @cookies.
Handles multipart forms (in particular, forms that involve file uploads).

Initialize the data from the query.
to a TempFile when the passed threshold is passed.
A wrapper class to use a StringIO object as the body and switch
def initialize_query()
  if ("POST" == env_table['REQUEST_METHOD']) and
    %r|\Amultipart/form-data.*boundary=\"?([^\";,]+)\"?| =~ env_table['CONTENT_TYPE']
    current_max_multipart_length = @max_multipart_length.respond_to?(:call) ? @max_multipart_length.call : @max_multipart_length
    raise StandardError.new("too large multipart data.") if env_table['CONTENT_LENGTH'].to_i > current_max_multipart_length
    boundary = $1.dup
    @multipart = true
    @params = read_multipart(boundary, Integer(env_table['CONTENT_LENGTH']))
  else
    @multipart = false
    @params = CGI.parse(
                case env_table['REQUEST_METHOD']
                when "GET", "HEAD"
                  if defined?(MOD_RUBY)
                    Apache::request.args or ""
                  else
                    env_table['QUERY_STRING'] or ""
                  end
                when "POST"
                  stdinput.binmode if defined? stdinput.binmode
                  stdinput.read(Integer(env_table['CONTENT_LENGTH'])) or ''
                else
                  read_from_cmdline
                end.dup.force_encoding(@accept_charset)
              )
    unless Encoding.find(@accept_charset) == Encoding::ASCII_8BIT
      @params.each do |key,values|
        values.each do |value|
          unless value.valid_encoding?
            if @accept_charset_error_block
              @accept_charset_error_block.call(key,value)
            else
              raise InvalidEncoding,"Accept-Charset encoding error"
            end
          end
        end
      end
    end
  end
  @cookies = CGI::Cookie.parse((env_table['HTTP_COOKIE'] or env_table['COOKIE']))
end