class IDRAC::Session

def determine_session_endpoint

Determine the correct session endpoint based on Redfish version
def determine_session_endpoint
  begin
    debug "Checking Redfish version to determine session endpoint...", 1
    
    response = connection.get('/redfish/v1') do |req|
      req.headers['Accept'] = 'application/json'
    end
    
    if response.status == 200
      begin
        data = JSON.parse(response.body)
        redfish_version = data['RedfishVersion']
        
        if redfish_version
          debug "Detected Redfish version: #{redfish_version}", 1
          
          # For version 1.17.0 and below, use the /redfish/v1/Sessions endpoint
          # For newer versions, use /redfish/v1/SessionService/Sessions
          if Gem::Version.new(redfish_version) <= Gem::Version.new('1.17.0')
            endpoint = '/redfish/v1/Sessions'
            debug "Using endpoint #{endpoint} for Redfish version #{redfish_version}", 1
            return endpoint
          else
            endpoint = '/redfish/v1/SessionService/Sessions'
            debug "Using endpoint #{endpoint} for Redfish version #{redfish_version}", 1
            return endpoint
          end
        end
      rescue JSON::ParserError => e
        debug "Error parsing Redfish version: #{e.message}", 0, :red
        debug e.backtrace.join("\n"), 3 if e.backtrace && @verbosity >= 3
      rescue => e
        debug "Error determining Redfish version: #{e.message}", 0, :red
        debug e.backtrace.join("\n"), 3 if e.backtrace && @verbosity >= 3
      end
    end
  rescue => e
    debug "Error checking Redfish version: #{e.message}", 0, :red
    debug e.backtrace.join("\n"), 3 if e.backtrace && @verbosity >= 3
  end
  
  # Default to /redfish/v1/Sessions if we can't determine version
  default_endpoint = '/redfish/v1/Sessions'
  debug "Defaulting to endpoint #{default_endpoint}", 0, :light_yellow
  default_endpoint
end