From 5d2e13db0c9e6c2ef2455fcc4732b009068ea9b6 Mon Sep 17 00:00:00 2001 From: Snowflake Date: Mon, 8 Jun 2026 20:31:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20updates.rb=20=E5=A4=84=E7=90=86=20Gitee?= =?UTF-8?q?=20raw=20URL=20302=20=E9=87=8D=E5=AE=9A=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/updates.rb | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/updates.rb b/src/updates.rb index 2fd5be3..0492638 100644 --- a/src/updates.rb +++ b/src/updates.rb @@ -32,14 +32,21 @@ class UpdateManager def self.fetch MethodExecutor.record('debug', 'updates', "Fetching version list from #{VERSION_LIST_URL}") uri = URI(VERSION_LIST_URL) - response = Net::HTTP.get_response(uri) - case response.code.to_i - when 200 - MethodExecutor.record('debug', 'updates', 'Version list fetched successfully.') - response.body - else - raise "Unexpected HTTP response code: #{response.code}" + 5.times do # 跟随重定向(Gitee raw URL → raw.giteeusercontent.com) + response = Net::HTTP.get_response(uri) + case response.code.to_i + when 200 + MethodExecutor.record('debug', 'updates', 'Version list fetched successfully.') + return response.body + when 301, 302, 307, 308 + uri = URI(response['location']) + MethodExecutor.record('debug', 'updates', "Following redirect to #{uri}") + next + else + raise "Unexpected HTTP response code: #{response.code}" + end end + raise 'Too many redirects' rescue StandardError => e MethodExecutor.record('error', 'updates', "Failed to fetch version list: #{e}") nil