refactor: 修复潜在bug、补全许可声明、添加类型注解、同步文档
This commit is contained in:
+68
@@ -0,0 +1,68 @@
|
||||
# <<*>> -^v- SNOWARE APPLICATION
|
||||
# usage: Check for updates from remote.
|
||||
# author: S.A.
|
||||
# time: 2026-06-08
|
||||
# Copyright (c) [2026] [S.A. SNOWARE-SCU]
|
||||
# [MineSentinel] is licensed under Mulan PubL v2.
|
||||
# You can use this software according to the terms and conditions of the Mulan PubL v2.
|
||||
# You may obtain a copy of Mulan PubL v2 at:
|
||||
# http://license.coscl.org.cn/MulanPubL-2.0
|
||||
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
# See the Mulan PubL v2 for more details.
|
||||
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'net/http'
|
||||
require 'uri'
|
||||
|
||||
# @type const RELEASE_SERIAL_CODE: String
|
||||
RELEASE_SERIAL_CODE = 'b43527c'
|
||||
# @type const CHANNEL: String
|
||||
CHANNEL = 'master'
|
||||
# @type const VERSION_LIST_URL: String
|
||||
VERSION_LIST_URL = "https://raw.giteeusercontent.com/scu_team/minesentinel/#{CHANNEL}/APP_VERSIONS_LIST"
|
||||
# @type const RECURSIVE_RETRY_DEPTH: Integer
|
||||
RECURSIVE_RETRY_DEPTH = 3
|
||||
|
||||
class UpdateManager
|
||||
# @return [String]
|
||||
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}"
|
||||
end
|
||||
rescue => e
|
||||
MethodExecutor.record("error", "updates", "Failed to fetch version list: #{e}")
|
||||
nil
|
||||
end
|
||||
|
||||
# @return [Hash{Symbol=>Symbol, Symbol=>String}]
|
||||
def self.check
|
||||
raw = fetch
|
||||
if raw.nil?
|
||||
MethodExecutor.record("error", "updates", "Version list is empty, cannot check updates.")
|
||||
raise "Unknown Error"
|
||||
end
|
||||
|
||||
lines = raw.lines(chomp: true)
|
||||
lines.each_with_index do |line, index|
|
||||
line_num = index + 1
|
||||
if line == RELEASE_SERIAL_CODE && line_num == lines.size
|
||||
MethodExecutor.record("info", "updates", "Current version #{RELEASE_SERIAL_CODE} is up to date.")
|
||||
return { type: :Newest, version: RELEASE_SERIAL_CODE }
|
||||
end
|
||||
end
|
||||
|
||||
latest = lines.last
|
||||
MethodExecutor.record("info", "updates", "Newer version #{latest} available (current: #{RELEASE_SERIAL_CODE}).")
|
||||
{ type: :NewerAvailable, version: latest }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user