This commit is contained in:
+32
-2
@@ -11,6 +11,7 @@ import re
|
||||
import urllib.request
|
||||
from dataclasses import dataclass
|
||||
|
||||
from . import client_policy
|
||||
from .version import APP_CODE_NAME, APP_UPDATE_CHECK_URL, APP_VERSION
|
||||
|
||||
DEFAULT_TIMEOUT_SECONDS = 3.0
|
||||
@@ -54,6 +55,8 @@ class UpdateCheckResult:
|
||||
automatic_update_error: str = ""
|
||||
message: str = ""
|
||||
error: str = ""
|
||||
client_policy: client_policy.ClientPolicy | None = None
|
||||
client_policy_error: str = ""
|
||||
|
||||
@property
|
||||
def can_enter(self) -> bool:
|
||||
@@ -202,8 +205,31 @@ def check_for_update(
|
||||
return UpdateCheckResult(current_version=current_version, checked=False)
|
||||
|
||||
try:
|
||||
payload = (fetcher or fetch_update_payload)(url, timeout)
|
||||
info = parse_update_info(_decode_payload(payload))
|
||||
payload = _decode_payload((fetcher or fetch_update_payload)(url, timeout))
|
||||
except Exception as exc:
|
||||
return UpdateCheckResult(
|
||||
current_version=current_version,
|
||||
checked=True,
|
||||
forced=False,
|
||||
error=f"启动版本检查失败,已允许继续使用:{exc}",
|
||||
)
|
||||
|
||||
resolved_policy = None
|
||||
policy_error = ""
|
||||
if isinstance(payload, dict) and "client_policy" in payload:
|
||||
try:
|
||||
resolved_policy = client_policy.parse_client_policy(
|
||||
payload.get("client_policy")
|
||||
)
|
||||
policy_error = resolved_policy.warning
|
||||
except client_policy.ClientPolicyError as exc:
|
||||
policy_error = str(exc)
|
||||
|
||||
try:
|
||||
if isinstance(payload, dict) and payload.get("release", object()) is None:
|
||||
info = UpdateInfo()
|
||||
else:
|
||||
info = parse_update_info(payload)
|
||||
forced = is_forced_update(info, current_version)
|
||||
return UpdateCheckResult(
|
||||
current_version=current_version,
|
||||
@@ -220,6 +246,8 @@ def check_for_update(
|
||||
signature_algorithm=info.signature_algorithm,
|
||||
manifest_signature=info.manifest_signature,
|
||||
message=info.message,
|
||||
client_policy=resolved_policy,
|
||||
client_policy_error=policy_error,
|
||||
)
|
||||
except Exception as exc:
|
||||
return UpdateCheckResult(
|
||||
@@ -227,4 +255,6 @@ def check_for_update(
|
||||
checked=True,
|
||||
forced=False,
|
||||
error=f"启动版本检查失败,已允许继续使用:{exc}",
|
||||
client_policy=resolved_policy,
|
||||
client_policy_error=policy_error,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user