发行包上传错误 detail 去掉与步骤标签重复的前缀
- 读取响应/分片响应/完成响应失败改为直接给原始 error,步骤由 GamePackageUploadStep 标签提供 - JSON 解析与缺字段的 detail 去掉「上传状态响应」「分片响应」「完成响应」等重复主语
This commit is contained in:
@@ -150,20 +150,21 @@ async fn read_upload_state(
|
||||
))
|
||||
})?;
|
||||
let status = response.status().as_u16();
|
||||
let body = response.text().await.map_err(|error| {
|
||||
GamePackageUploadError::read_upload_state(format!("读取响应失败:{error}"))
|
||||
})?;
|
||||
let body = response
|
||||
.text()
|
||||
.await
|
||||
.map_err(|error| GamePackageUploadError::read_upload_state(format!("{error}")))?;
|
||||
if status >= 400 {
|
||||
let (code, message) = parse_server_error(status, &body);
|
||||
let detail = server_error_detail(code, message, || format!("HTTP {status}"));
|
||||
return Err(GamePackageUploadError::read_upload_state(detail));
|
||||
}
|
||||
let parsed: Value = serde_json::from_str(&body).map_err(|error| {
|
||||
GamePackageUploadError::read_upload_state(format!("上传状态响应不是合法 JSON:{error}"))
|
||||
GamePackageUploadError::read_upload_state(format!("响应不是合法 JSON:{error}"))
|
||||
})?;
|
||||
let payload = parsed.get("data").unwrap_or(&parsed);
|
||||
serde_json::from_value(payload.clone()).map_err(|error| {
|
||||
GamePackageUploadError::read_upload_state(format!("上传状态响应缺少字段:{error}"))
|
||||
GamePackageUploadError::read_upload_state(format!("响应缺少字段:{error}"))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -196,9 +197,7 @@ async fn upload_chunk(
|
||||
})?;
|
||||
let status = response.status().as_u16();
|
||||
let text = response.text().await.map_err(|error| {
|
||||
ChunkUploadError::Retryable(GamePackageUploadError::upload_chunk(format!(
|
||||
"读取分片响应失败:{error}"
|
||||
)))
|
||||
ChunkUploadError::Retryable(GamePackageUploadError::upload_chunk(format!("{error}")))
|
||||
})?;
|
||||
if status == 409 {
|
||||
let (code, message) = parse_server_error(status, &text);
|
||||
@@ -231,7 +230,7 @@ async fn upload_chunk(
|
||||
}
|
||||
let parsed: Value = serde_json::from_str(&text).map_err(|error| {
|
||||
ChunkUploadError::Retryable(GamePackageUploadError::upload_chunk(format!(
|
||||
"分片响应不是合法 JSON:{error}"
|
||||
"响应不是合法 JSON:{error}"
|
||||
)))
|
||||
})?;
|
||||
let payload = parsed.get("data").unwrap_or(&parsed);
|
||||
@@ -240,7 +239,7 @@ async fn upload_chunk(
|
||||
.and_then(Value::as_u64)
|
||||
.ok_or_else(|| {
|
||||
ChunkUploadError::Fatal(GamePackageUploadError::upload_chunk(
|
||||
"分片响应缺少 receivedBytes",
|
||||
"响应缺少 receivedBytes",
|
||||
))
|
||||
})
|
||||
}
|
||||
@@ -268,16 +267,17 @@ async fn complete_upload(
|
||||
.await
|
||||
.map_err(|error| GamePackageUploadError::complete_upload(format!("请求未送达:{error}")))?;
|
||||
let status = response.status().as_u16();
|
||||
let text = response.text().await.map_err(|error| {
|
||||
GamePackageUploadError::complete_upload(format!("读取响应失败:{error}"))
|
||||
})?;
|
||||
let text = response
|
||||
.text()
|
||||
.await
|
||||
.map_err(|error| GamePackageUploadError::complete_upload(format!("{error}")))?;
|
||||
if status >= 400 {
|
||||
let (code, message) = parse_server_error(status, &text);
|
||||
let detail = server_error_detail(code, message, || format!("HTTP {status}"));
|
||||
return Err(GamePackageUploadError::complete_upload(detail));
|
||||
}
|
||||
let parsed: Value = serde_json::from_str(&text).map_err(|error| {
|
||||
GamePackageUploadError::complete_upload(format!("完成响应不是合法 JSON:{error}"))
|
||||
GamePackageUploadError::complete_upload(format!("响应不是合法 JSON:{error}"))
|
||||
})?;
|
||||
let payload = parsed.get("data").unwrap_or(&parsed);
|
||||
Ok(GamePackageUploadOutcome {
|
||||
|
||||
Reference in New Issue
Block a user