完成 Ruff 全量清理
This commit is contained in:
@@ -306,7 +306,7 @@ class UserPrizeRecordItem(TafStruct):
|
||||
self.exchangeDate = ins.read_int64(21, default=self.exchangeDate)
|
||||
while True:
|
||||
pos = ins.buf.tell()
|
||||
tag, dtype = ins.read_head()
|
||||
_tag, dtype = ins.read_head()
|
||||
if dtype == TafType.STRUCT_END:
|
||||
ins.buf.seek(pos)
|
||||
return
|
||||
@@ -406,7 +406,7 @@ class ActTaskPrizeInfo(TafStruct):
|
||||
self.extra = ins.read_map(12)
|
||||
while True:
|
||||
pos = ins.buf.tell()
|
||||
tag, dtype = ins.read_head()
|
||||
_tag, dtype = ins.read_head()
|
||||
if dtype == TafType.STRUCT_END:
|
||||
ins.buf.seek(pos)
|
||||
return
|
||||
@@ -494,7 +494,7 @@ class ActTaskDetailItem(TafStruct):
|
||||
self.endTime = ins.read_string(26, default=self.endTime)
|
||||
while True:
|
||||
pos = ins.buf.tell()
|
||||
tag, dtype = ins.read_head()
|
||||
_tag, dtype = ins.read_head()
|
||||
if dtype == TafType.STRUCT_END:
|
||||
ins.buf.seek(pos)
|
||||
return
|
||||
|
||||
@@ -232,7 +232,7 @@ def solve_safe_auth(
|
||||
result = solver.solve(risk_url)
|
||||
except HuyaQrAuthRequiredError:
|
||||
raise
|
||||
except Exception as exc:
|
||||
except Exception as exc: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
last_err = exc
|
||||
logger.warning(f"[safe_auth] 第 {attempt + 1} 次过验异常: {exc}")
|
||||
time.sleep(1.0)
|
||||
@@ -425,8 +425,8 @@ class HuyaAppPasswordLogin:
|
||||
from .device_profile import record_login
|
||||
|
||||
record_login(self.username, result.success, result.message)
|
||||
except Exception: # 元数据记录失败不影响登录结果
|
||||
pass
|
||||
except Exception as exc: # noqa: BLE001 # 元数据记录失败不影响登录结果
|
||||
logger.debug(f"登录元数据记录失败: {exc}")
|
||||
return result
|
||||
|
||||
def _login_impl(self) -> HuyaLoginResult:
|
||||
@@ -450,7 +450,7 @@ class HuyaAppPasswordLogin:
|
||||
message=str(exc),
|
||||
code="QR_AUTH_REQUIRED",
|
||||
)
|
||||
except Exception as exc:
|
||||
except Exception as exc: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
return HuyaLoginResult(
|
||||
success=False,
|
||||
message=f"App 登录凭证获取失败: {exc}",
|
||||
@@ -478,7 +478,7 @@ class HuyaAppPasswordLogin:
|
||||
if env.uid != uid:
|
||||
struct.pack_into(">Q", raw, env.uid_off, uid)
|
||||
wup = base64.b64encode(bytes(raw)).decode("ascii")
|
||||
except Exception as exc:
|
||||
except Exception as exc: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
return HuyaLoginResult(
|
||||
success=False,
|
||||
message=f"证书铸造/信封补丁失败: {exc}",
|
||||
@@ -603,7 +603,7 @@ class HuyaAppPasswordLogin:
|
||||
sdid=sdid,
|
||||
context=pc.context,
|
||||
)
|
||||
except Exception as exc:
|
||||
except Exception as exc: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
return HuyaLoginResult(
|
||||
success=False,
|
||||
message=f"扫码绑定兑换 Cookie 失败: {exc}",
|
||||
|
||||
@@ -6,7 +6,7 @@ import threading
|
||||
import time
|
||||
from collections.abc import Mapping
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from datetime import UTC, datetime
|
||||
|
||||
from core.sms_provider import SmsLine, SmsProviderClient
|
||||
|
||||
@@ -76,7 +76,7 @@ def register_huya_with_sms_line(
|
||||
sms_url=item.url,
|
||||
)
|
||||
|
||||
sent_at = datetime.now()
|
||||
sent_at = datetime.now(UTC)
|
||||
try:
|
||||
code_result = send_huya_sms_code(phone=phone, proxies=proxies)
|
||||
except HuyaLoginError as exc:
|
||||
@@ -89,7 +89,7 @@ def register_huya_with_sms_line(
|
||||
normalized_phone=normalized_phone,
|
||||
sms_url=item.url,
|
||||
)
|
||||
except Exception as exc:
|
||||
except Exception as exc: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
return HuyaAutoRegisterResult(
|
||||
phone=phone,
|
||||
provider=item.provider,
|
||||
@@ -155,7 +155,7 @@ def register_huya_with_sms_line(
|
||||
sms_url=item.url,
|
||||
attempts=attempts,
|
||||
)
|
||||
except Exception as exc:
|
||||
except Exception as exc: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
return HuyaAutoRegisterResult(
|
||||
phone=phone,
|
||||
provider=item.provider,
|
||||
|
||||
@@ -10,7 +10,7 @@ import time
|
||||
import uuid
|
||||
from collections.abc import Mapping
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from datetime import UTC, datetime
|
||||
from urllib.parse import quote, urlsplit, urlunsplit
|
||||
|
||||
import requests
|
||||
@@ -496,7 +496,7 @@ def change_huya_password_with_sms_line(
|
||||
) -> HuyaChangePasswordResult:
|
||||
"""使用同一手机号接码链接完成改密短信验证。"""
|
||||
changer = HuyaPasswordChanger(uid=uid, cookie=cookie, proxies=proxies)
|
||||
sent_at = datetime.now()
|
||||
sent_at = datetime.now(UTC)
|
||||
code_result = changer.send_code()
|
||||
if not code_result.success or not code_result.session_data:
|
||||
return HuyaChangePasswordResult(
|
||||
|
||||
@@ -22,6 +22,8 @@ import random
|
||||
from collections.abc import Mapping
|
||||
from pathlib import Path
|
||||
|
||||
from loguru import logger
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent.parent
|
||||
DATA_DIR = ROOT / "data"
|
||||
PRIMARY_PROFILE_DB = DATA_DIR / "huya_device_profiles.json"
|
||||
@@ -119,13 +121,13 @@ def _load_db() -> dict:
|
||||
if PRIMARY_PROFILE_DB.exists():
|
||||
try:
|
||||
return json.loads(PRIMARY_PROFILE_DB.read_text("utf-8"))
|
||||
except Exception:
|
||||
pass
|
||||
except Exception as exc: # noqa: BLE001
|
||||
logger.debug(f"读取主设备画像库失败: {exc}")
|
||||
if FALLBACK_PROFILE_DB.exists():
|
||||
try:
|
||||
return json.loads(FALLBACK_PROFILE_DB.read_text("utf-8"))
|
||||
except Exception:
|
||||
pass
|
||||
except Exception as exc: # noqa: BLE001
|
||||
logger.debug(f"读取备用设备画像库失败: {exc}")
|
||||
return {}
|
||||
|
||||
|
||||
@@ -135,8 +137,8 @@ def _save_db(db: dict) -> None:
|
||||
PRIMARY_PROFILE_DB.write_text(
|
||||
json.dumps(db, indent=2, ensure_ascii=False), encoding="utf-8"
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
except Exception as exc: # noqa: BLE001
|
||||
logger.debug(f"保存设备画像库失败: {exc}")
|
||||
|
||||
|
||||
def _enrich_profile(profile: dict) -> tuple[dict, bool]:
|
||||
|
||||
@@ -10,6 +10,8 @@ import json
|
||||
import struct
|
||||
from pathlib import Path
|
||||
|
||||
from loguru import logger
|
||||
|
||||
INT8, INT16, INT32, INT64 = 0x00, 0x01, 0x02, 0x03
|
||||
STRING1, STRING4 = 0x06, 0x07
|
||||
MAP, LIST = 0x08, 0x09
|
||||
@@ -131,8 +133,8 @@ class Envelope:
|
||||
if candidate.exists():
|
||||
try:
|
||||
return cls._load_from_path(candidate)
|
||||
except Exception:
|
||||
pass
|
||||
except Exception as exc: # noqa: BLE001
|
||||
logger.debug(f"加载证书信封候选文件失败: {candidate}: {exc}")
|
||||
return cls(base64.b64decode(DEFAULT_QURL_B64))
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -4,6 +4,8 @@ TAF/WUP 帧解码器 — 将二进制帧转为可读摘要,用于日志输出
|
||||
|
||||
from typing import Any, cast
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from .taf_protocol import TafInputStream, TafType
|
||||
from .wup_protocol import normalize_wup_payload
|
||||
|
||||
@@ -101,13 +103,13 @@ def _decode_taf_struct(ins: TafInputStream, depth: int = 0) -> dict:
|
||||
if depth < 5:
|
||||
try:
|
||||
val = _decode_taf_value(ins, dtype, depth)
|
||||
except Exception:
|
||||
except Exception: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
val = f"<decode_err:0x{dtype:02x}>"
|
||||
else:
|
||||
val = "<...>"
|
||||
try:
|
||||
ins.skip_field(dtype)
|
||||
except Exception:
|
||||
except Exception: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
break
|
||||
key = f"tag{tag}"
|
||||
if key in fields:
|
||||
@@ -195,19 +197,20 @@ def _decode_wup_body(body: bytes) -> dict:
|
||||
if v:
|
||||
try:
|
||||
tins = TafInputStream(v)
|
||||
ttag, tdt = tins.peek_head()
|
||||
_ttag, tdt = tins.peek_head()
|
||||
if tdt == TafType.STRUCT_BEGIN:
|
||||
tins.read_head()
|
||||
result[k] = _decode_taf_struct(tins)
|
||||
else:
|
||||
result[k] = f"<{len(v)}B>"
|
||||
except Exception:
|
||||
except Exception as exc: # noqa: BLE001
|
||||
logger.debug(f"TAF 嵌套结构解码失败: {exc}")
|
||||
result[k] = f"<{len(v)}B>"
|
||||
else:
|
||||
result[k] = _decode_taf_value(sins, vt)
|
||||
except Exception:
|
||||
pass
|
||||
except Exception as e:
|
||||
except Exception as exc: # noqa: BLE001
|
||||
logger.debug(f"TAF 字段解码失败: {exc}")
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
result["err"] = str(e)
|
||||
return result
|
||||
|
||||
@@ -286,7 +289,7 @@ def format_wss_log(body: bytes, cmd: int, seq: int, direction: str) -> str:
|
||||
try:
|
||||
ins = TafInputStream(clean)
|
||||
# 看第一个 head
|
||||
tag, dtype = ins.peek_head()
|
||||
_tag, dtype = ins.peek_head()
|
||||
if dtype == TafType.STRUCT_BEGIN:
|
||||
ins.read_head()
|
||||
fields = _decode_taf_struct(ins)
|
||||
@@ -314,6 +317,6 @@ def format_wss_log(body: bytes, cmd: int, seq: int, direction: str) -> str:
|
||||
if fields:
|
||||
return f"{prefix} {cmd_name} {_fmt_fields(cast(dict[str, Any], _truncate(fields)))}"
|
||||
return f"{prefix} {cmd_name}"
|
||||
except Exception:
|
||||
except Exception: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
cmd_name = CMD_NAMES.get(cmd, f"0x{cmd:02x}")
|
||||
return f"{prefix} {cmd_name} ({len(body)}B)"
|
||||
|
||||
@@ -92,7 +92,7 @@ class WSConnectParaInfo(TafStruct):
|
||||
|
||||
def _gen_trace_id() -> str:
|
||||
"""生成 sTraceId (格式 hex8:hex8:0:0,HAR 实证)"""
|
||||
h = "%016x" % random.getrandbits(64)
|
||||
h = f"{random.getrandbits(64):016x}"
|
||||
return f"{h}:{h}:0:0"
|
||||
|
||||
|
||||
@@ -294,7 +294,7 @@ class HuyaHttpClient:
|
||||
import gzip
|
||||
|
||||
resp_data = gzip.decompress(resp_data)
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
self.logger(f"[HTTP] ❌ 请求失败: {type(e).__name__}: {e}")
|
||||
return None
|
||||
|
||||
@@ -611,13 +611,13 @@ class HuyaHttpClient:
|
||||
or resp.headers.get("Content-Encoding") == "gzip"
|
||||
):
|
||||
resp_data = gzip.decompress(resp_data)
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
self.logger(f"[LIVELINK] ❌ 小程序码请求失败: {type(e).__name__}: {e}")
|
||||
return None
|
||||
|
||||
try:
|
||||
data = json.loads(resp_data.decode("utf-8", "replace"))
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
self.logger(f"[LIVELINK] ❌ 小程序码响应解析失败: {type(e).__name__}: {e}")
|
||||
return None
|
||||
|
||||
@@ -679,13 +679,13 @@ class HuyaHttpClient:
|
||||
or resp.headers.get("Content-Encoding") == "gzip"
|
||||
):
|
||||
resp_data = gzip.decompress(resp_data)
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
self.logger(f"[LIVELINK] ❌ 二维码状态请求失败: {type(e).__name__}: {e}")
|
||||
return None
|
||||
|
||||
try:
|
||||
data = json.loads(resp_data.decode("utf-8", "replace"))
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
self.logger(
|
||||
f"[LIVELINK] ❌ 二维码状态响应解析失败: {type(e).__name__}: {e}"
|
||||
)
|
||||
@@ -972,7 +972,7 @@ class HuyaHttpClient:
|
||||
import gzip
|
||||
|
||||
resp_data = gzip.decompress(resp_data)
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
self.logger(f"[HTTP] ❌ payOrderSubmitV5 失败: {e}")
|
||||
return None
|
||||
|
||||
|
||||
+3
-4
@@ -380,10 +380,9 @@ class HuyaPasswordLogin:
|
||||
|
||||
last_exc: Exception | None = None
|
||||
for attempt in range(max_ip_retries + 1):
|
||||
if attempt > 0:
|
||||
if not self._swap_proxy():
|
||||
logger.warning("无可用代理可切换,停止换 IP 重试")
|
||||
break
|
||||
if attempt > 0 and not self._swap_proxy():
|
||||
logger.warning("无可用代理可切换,停止换 IP 重试")
|
||||
break
|
||||
try:
|
||||
return self._login_once()
|
||||
except (HuyaQrAuthRequiredError, HuyaSmsAuthRequiredError) as exc:
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
来源:m-shop.yaoguo.com 的 jce/ShopFacade.js、api/orderui.ts、api/mall/PlayMallNewHome.ts
|
||||
"""
|
||||
|
||||
|
||||
from .taf_protocol import TafInputStream, TafOutputStream, TafStruct, TafType
|
||||
|
||||
|
||||
@@ -68,7 +67,7 @@ def _skip_to_struct_end(ins: TafInputStream):
|
||||
"""跳过当前结构里未解析的尾部字段,停在 STRUCT_END 前。"""
|
||||
while True:
|
||||
pos = ins.buf.tell()
|
||||
tag, dtype = ins.read_head()
|
||||
_tag, dtype = ins.read_head()
|
||||
if dtype == TafType.STRUCT_END:
|
||||
ins.buf.seek(pos)
|
||||
return
|
||||
@@ -427,7 +426,7 @@ class GoodsPriceInfo(TafStruct):
|
||||
def first_sku_id(self) -> int:
|
||||
if not self.skuMap:
|
||||
return 0
|
||||
return sorted(self.skuMap.keys())[0]
|
||||
return min(self.skuMap.keys())
|
||||
|
||||
@property
|
||||
def sku_list(self) -> list[dict]:
|
||||
|
||||
@@ -255,7 +255,7 @@ class TafInputStream:
|
||||
|
||||
def _read_int_len(self) -> int:
|
||||
"""读 map/list 长度(int32 带优化)"""
|
||||
tag, dtype = self.read_head()
|
||||
_tag, dtype = self.read_head()
|
||||
return self._read_int_value(dtype)
|
||||
|
||||
def _read_int_value(self, dtype: int) -> int:
|
||||
@@ -273,7 +273,7 @@ class TafInputStream:
|
||||
|
||||
def _skip_struct(self):
|
||||
while True:
|
||||
tag, dtype = self.read_head()
|
||||
_tag, dtype = self.read_head()
|
||||
if dtype == TafType.STRUCT_END:
|
||||
break
|
||||
self.skip_field(dtype)
|
||||
@@ -441,7 +441,7 @@ class TafInputStream:
|
||||
obj = struct_class()
|
||||
obj.read_from(self)
|
||||
# 消费 STRUCT_END
|
||||
t, dt = self.read_head()
|
||||
_t, dt = self.read_head()
|
||||
if dt != TafType.STRUCT_END:
|
||||
raise ValueError(f"期望 STRUCT_END, 实际 0x{dt:02x}")
|
||||
return obj
|
||||
|
||||
@@ -261,7 +261,7 @@ class HuyaCaptchaOcr:
|
||||
target["cropped_image"],
|
||||
char["cropped_image"],
|
||||
)
|
||||
except Exception:
|
||||
except Exception: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
score_matrix[target_index][char_index] = 1e6
|
||||
|
||||
row_ind, col_ind = linear_sum_assignment(score_matrix)
|
||||
|
||||
@@ -137,7 +137,7 @@ class HuyaVerificationSolver:
|
||||
max_width = max(bg.shape[1], tip.shape[1])
|
||||
|
||||
def pad_right(img, target_width):
|
||||
height, width = img.shape[:2]
|
||||
_height, width = img.shape[:2]
|
||||
if width >= target_width:
|
||||
return img
|
||||
return cv2.copyMakeBorder(
|
||||
@@ -299,8 +299,8 @@ class HuyaVerificationSolver:
|
||||
"虎牙登录风控strategys完整结构: {}",
|
||||
json.dumps(strategies, ensure_ascii=False)[:1200],
|
||||
)
|
||||
except Exception: # noqa: BLE001
|
||||
pass
|
||||
except Exception as exc: # noqa: BLE001
|
||||
logger.debug(f"风控策略日志序列化失败: {exc}")
|
||||
strategy_url_lower = strategy_url.lower()
|
||||
# 判定依据是 URL 路径,不是 strategy 数值。
|
||||
# 实测(2026-08-25): strategy=64 时 pt_auth.html 是滑块、qr_auth.html 才是扫码,
|
||||
|
||||
+14
-12
@@ -76,7 +76,7 @@ class WssMessage:
|
||||
def decode(cls, data: bytes) -> "WssMessage":
|
||||
if len(data) < 6:
|
||||
raise ValueError(f"消息太短: {len(data)} bytes")
|
||||
version, command = struct.unpack(">BB", data[0:2])
|
||||
_version, command = struct.unpack(">BB", data[0:2])
|
||||
sequence = struct.unpack(">I", data[2:6])[0]
|
||||
body = data[6:]
|
||||
return cls(command=command, sequence=sequence, body=body)
|
||||
@@ -256,7 +256,7 @@ class HuyaWssClient:
|
||||
format_wss_log(msg.body, msg.command, msg.sequence, "收")
|
||||
)
|
||||
await self._handle_message(msg)
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
self.logger(
|
||||
f"[WSS] 解析消息失败: {e} raw_hex={raw_bytes[:50].hex()}"
|
||||
)
|
||||
@@ -264,7 +264,7 @@ class HuyaWssClient:
|
||||
pass
|
||||
except websockets.exceptions.ConnectionClosed as e:
|
||||
self.logger(f"[WSS] 连接关闭: code={e.code} reason={e.reason}")
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
self.logger(f"[WSS] 接收循环异常: {type(e).__name__}: {e}")
|
||||
|
||||
async def _handle_message(self, msg: WssMessage):
|
||||
@@ -289,7 +289,7 @@ class HuyaWssClient:
|
||||
await self.send_heartbeat()
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
self.logger(f"[WSS] 心跳循环异常: {e}")
|
||||
|
||||
async def send_heartbeat(self):
|
||||
@@ -399,7 +399,7 @@ class HuyaWssClient:
|
||||
)
|
||||
return
|
||||
ins = TafInputStream(treq)
|
||||
tag, dtype = ins.peek_head()
|
||||
_tag, dtype = ins.peek_head()
|
||||
if dtype != 0x0A: # STRUCT_BEGIN
|
||||
self.logger(f"[RPC] wsLaunch tRsp 非结构体 dtype=0x{dtype:02x}")
|
||||
return
|
||||
@@ -432,7 +432,7 @@ class HuyaWssClient:
|
||||
self.logger(
|
||||
f"[RPC] wsLaunch 解析: guid={self._launch_guid} ip={self._launch_ip}"
|
||||
)
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
self.logger(f"[RPC] wsLaunch 响应解析失败: {e}")
|
||||
|
||||
@staticmethod
|
||||
@@ -610,15 +610,17 @@ class HuyaWssClient:
|
||||
if data and isinstance(data, bytes) and len(data) > 0:
|
||||
try:
|
||||
ins = TafInputStream(data)
|
||||
tag, dtype = ins.peek_head()
|
||||
_tag, dtype = ins.peek_head()
|
||||
if dtype == TafType.STRUCT_BEGIN:
|
||||
ins.read_head()
|
||||
decoded = _decode_taf_struct(ins)
|
||||
self.logger(
|
||||
f"[←] {service}.{method} {key}: {_truncate(decoded)}"
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
except Exception as exc: # noqa: BLE001
|
||||
self.logger(
|
||||
f"[debug] WUP 响应字段解码失败: {service}.{method}.{key}: {exc}"
|
||||
)
|
||||
|
||||
if rsp_class is None:
|
||||
return body
|
||||
@@ -794,13 +796,13 @@ class HuyaWssClient:
|
||||
if data and isinstance(data, bytes) and len(data) > 0:
|
||||
try:
|
||||
ins = TafInputStream(data)
|
||||
tag, dtype = ins.peek_head()
|
||||
_tag, dtype = ins.peek_head()
|
||||
if dtype == TafType.STRUCT_BEGIN:
|
||||
ins.read_head()
|
||||
decoded = _decode_taf_struct(ins)
|
||||
self.logger(f"[←] payOrderSubmitV5 {key}: {_truncate(decoded)}")
|
||||
except Exception:
|
||||
pass
|
||||
except Exception as exc: # noqa: BLE001
|
||||
self.logger(f"[debug] WUP 支付响应字段解码失败: {key}: {exc}")
|
||||
result = wup_resp.readStruct("tRsp", PayOrderRes)
|
||||
if result is None:
|
||||
result = wup_resp.readStruct("tResp", PayOrderRes)
|
||||
|
||||
@@ -211,7 +211,7 @@ class WupResponse:
|
||||
_, vt = ins.read_head()
|
||||
val = _read_bytes_value(ins, vt)
|
||||
self.newdata[key] = val
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
print(f"[WupResponse] 解析 newdata 失败: {e}")
|
||||
|
||||
def readStruct(self, key: str, struct_class=None):
|
||||
@@ -236,13 +236,13 @@ class WupResponse:
|
||||
ins = TafInputStream(data)
|
||||
# newdata 里的结构体以 STRUCT_BEGIN 开头
|
||||
try:
|
||||
tag, dtype = ins.peek_head()
|
||||
_tag, dtype = ins.peek_head()
|
||||
if dtype == TafType.STRUCT_BEGIN:
|
||||
ins.read_head() # 消费 STRUCT_BEGIN
|
||||
obj = struct_class()
|
||||
obj.read_from(ins)
|
||||
return obj
|
||||
except Exception as e:
|
||||
except Exception as e: # noqa: BLE001 外部接口与任务边界需要保留宽泛异常兜底
|
||||
print(f"[WupResponse] 解析 {struct_class.__name__} 失败: {e}")
|
||||
return None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user