class IDRAC::Client

def _perform_get(path:, headers: {})

def _perform_get(path:, headers: {})
  # For screenshot functionality, we need to use the WebUI cookies
  if web.cookies.nil? && path.include?('screen/screen.jpg')
    web.login unless web.session_id
  end
  
  debug "GET request to #{base_url}/#{path}", 1
  
  headers_to_use = {
    "User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36",
    "Accept-Encoding" => "deflate, gzip"
  }
  headers_to_use["Host"] = @host_header if @host_header
  
  if web.cookies
    headers_to_use["Cookie"] = web.cookies
    debug "Using WebUI cookies for request", 2
  elsif @direct_mode
    # In direct mode, use Basic Auth
    headers_to_use["Authorization"] = "Basic #{Base64.strict_encode64("#{username}:#{password}")}"
    debug "Using Basic Auth for GET request", 2
  elsif session.x_auth_token
    headers_to_use["X-Auth-Token"] = session.x_auth_token
    debug "Using X-Auth-Token for GET request", 2
  end
  
  debug "Request headers: #{headers_to_use.merge(headers).inspect}", 3
  
  response = HTTParty.get(
    "#{base_url}/#{path}",
    headers: headers_to_use.merge(headers),
    verify: false
  )
  
  debug "Response status: #{response.code}", 1
  debug "Response headers: #{response.headers.inspect}", 2
  debug "Response body: #{response.body.to_s[0..500]}#{response.body.to_s.length > 500 ? '...' : ''}", 3 if response.body
  
  response
end