class IDRAC::Firmware
def download_firmware(update)
def download_firmware(update) return false unless update && update[:download_url] begin # Create a temporary directory for the download temp_dir = Dir.mktmpdir # Extract the filename from the path filename = File.basename(update[:path]) local_path = File.join(temp_dir, filename) puts "Downloading firmware from #{update[:download_url]}".light_cyan puts "Saving to #{local_path}".light_cyan # Download the file uri = URI.parse(update[:download_url]) Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https', verify_mode: OpenSSL::SSL::VERIFY_NONE) do |http| request = Net::HTTP::Get.new(uri) http.request(request) do |response| if response.code == "200" File.open(local_path, 'wb') do |file| response.read_body do |chunk| file.write(chunk) end end puts "Download completed successfully".green return local_path else puts "Failed to download firmware: #{response.code} #{response.message}".red return false end end end rescue => e puts "Error downloading firmware: #{e.message}".red.bold return false end end