发行包上传用 From 收敛结构化错误,替换重复的 map_err
- 为 GamePackageUploadError 实现 From<GamePackageUploadError> for String - upload_staged_game_package 中三处 .map_err(|e| e.to_user_msg()) 改为 ?,Fatal 分支改为 error.into()
This commit is contained in:
@@ -130,6 +130,13 @@ impl GamePackageUploadError {
|
||||
}
|
||||
}
|
||||
|
||||
/// 上传编排对外只回一句 `String`,让 `?` 直接完成结构化错误到用户文案的收敛。
|
||||
impl From<GamePackageUploadError> for String {
|
||||
fn from(error: GamePackageUploadError) -> Self {
|
||||
error.to_user_msg()
|
||||
}
|
||||
}
|
||||
|
||||
async fn read_upload_state(
|
||||
client: &reqwest::Client,
|
||||
base_url: &str,
|
||||
@@ -336,8 +343,7 @@ pub(crate) async fn upload_staged_game_package(
|
||||
request.version_id,
|
||||
&access_token,
|
||||
)
|
||||
.await
|
||||
.map_err(|error| error.to_user_msg())?;
|
||||
.await?;
|
||||
if state.declared_package_bytes != 0 && state.declared_package_bytes != total_bytes {
|
||||
return Err(format!(
|
||||
"本地发行包与版本声明的体积不一致(本地 {} 字节,声明 {} 字节),请重新导出后再发布",
|
||||
@@ -374,7 +380,7 @@ pub(crate) async fn upload_staged_game_package(
|
||||
on_progress(received, total_bytes);
|
||||
break;
|
||||
}
|
||||
Err(ChunkUploadError::Fatal(error)) => return Err(error.to_user_msg()),
|
||||
Err(ChunkUploadError::Fatal(error)) => return Err(error.into()),
|
||||
Err(ChunkUploadError::Retryable(error)) => {
|
||||
if attempt >= CHUNK_MAX_ATTEMPTS {
|
||||
return Err(format!(
|
||||
@@ -395,8 +401,7 @@ pub(crate) async fn upload_staged_game_package(
|
||||
request.version_id,
|
||||
&access_token,
|
||||
)
|
||||
.await
|
||||
.map_err(|error| error.to_user_msg())?;
|
||||
.await?;
|
||||
received = authoritative.received_bytes.min(total_bytes);
|
||||
on_progress(received, total_bytes);
|
||||
}
|
||||
@@ -408,8 +413,7 @@ pub(crate) async fn upload_staged_game_package(
|
||||
&access_token,
|
||||
request.idempotency_key,
|
||||
)
|
||||
.await
|
||||
.map_err(|error| error.to_user_msg())?;
|
||||
.await?;
|
||||
outcome.uploaded_bytes = total_bytes;
|
||||
Ok(outcome)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user