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'
      req.headers['Host'] = host_header if host_header
    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
          endpoint = Gem::Version.new(redfish_version) <= Gem::Version.new('1.17.0') ? 
                     '/redfish/v1/Sessions' : 
                     '/redfish/v1/SessionService/Sessions'
          
          debug "Using endpoint #{endpoint} for Redfish version #{redfish_version}", 1
          return endpoint
        end
      rescue JSON::ParserError => e
        debug "Error parsing Redfish version: #{e.message}", 1, :red
      rescue => e
        debug "Error determining Redfish version: #{e.message}", 1, :red
      end
    end
  rescue => e
    debug "Error checking Redfish version: #{e.message}", 1, :red
  end
  
  # Default to /redfish/v1/Sessions if we can't determine version
  default_endpoint = '/redfish/v1/Sessions'
  debug "Defaulting to endpoint #{default_endpoint}", 1, :light_yellow
  default_endpoint
end