发行包上传 HTTP 兜底先过滤 message 再退 code

read_upload_state / upload_chunk(retryable、fatal) / complete_upload 四处 .or(code).filter 顺序反了
空 message 会把服务端 code 一起吞掉,统一改成 filter(message).or_else(|| code.filter(...))
This commit is contained in:
2026-10-02 22:09:02 +08:00
parent a0428da5d1
commit 1a99a2f26b
@@ -90,8 +90,8 @@ async fn read_upload_state(
if status >= 400 {
let (code, message) = parse_server_error(status, &body);
return Err(message
.or(code)
.filter(|detail| !detail.trim().is_empty())
.or_else(|| code.filter(|detail| !detail.trim().is_empty()))
.unwrap_or_else(|| format!("HTTP {status}")));
}
let parsed: Value = serde_json::from_str(&body)
@@ -145,8 +145,8 @@ async fn upload_chunk(
let (code, message) = parse_server_error(status, &text);
return Err(ChunkUploadError::Retryable(
message
.or(code)
.filter(|detail| !detail.trim().is_empty())
.or_else(|| code.filter(|detail| !detail.trim().is_empty()))
.unwrap_or_else(|| format!("HTTP {status}")),
));
}
@@ -154,8 +154,8 @@ async fn upload_chunk(
let (code, message) = parse_server_error(status, &text);
return Err(ChunkUploadError::Fatal(
message
.or(code)
.filter(|detail| !detail.trim().is_empty())
.or_else(|| code.filter(|detail| !detail.trim().is_empty()))
.unwrap_or_else(|| format!("HTTP {status}")),
));
}
@@ -198,8 +198,8 @@ async fn complete_upload(
if status >= 400 {
let (code, message) = parse_server_error(status, &text);
return Err(message
.or(code)
.filter(|detail| !detail.trim().is_empty())
.or_else(|| code.filter(|detail| !detail.trim().is_empty()))
.unwrap_or_else(|| format!("HTTP {status}")));
}
let parsed: Value =