Integrate unfinished server-rs refactor worklists
This commit is contained in:
@@ -196,6 +196,17 @@ pub enum OssError {
|
||||
Sign(String),
|
||||
}
|
||||
|
||||
// 平台 OSS 错误只先归类,不在 platform 层绑定 HTTP status。
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub enum OssErrorKind {
|
||||
InvalidConfig,
|
||||
InvalidRequest,
|
||||
ObjectNotFound,
|
||||
Request,
|
||||
SerializePolicy,
|
||||
Sign,
|
||||
}
|
||||
|
||||
impl LegacyAssetPrefix {
|
||||
pub fn parse(raw: &str) -> Option<Self> {
|
||||
let normalized = raw
|
||||
@@ -620,6 +631,19 @@ impl fmt::Display for OssError {
|
||||
|
||||
impl Error for OssError {}
|
||||
|
||||
impl OssError {
|
||||
pub fn kind(&self) -> OssErrorKind {
|
||||
match self {
|
||||
Self::InvalidConfig(_) => OssErrorKind::InvalidConfig,
|
||||
Self::InvalidRequest(_) => OssErrorKind::InvalidRequest,
|
||||
Self::ObjectNotFound(_) => OssErrorKind::ObjectNotFound,
|
||||
Self::Request(_) => OssErrorKind::Request,
|
||||
Self::SerializePolicy(_) => OssErrorKind::SerializePolicy,
|
||||
Self::Sign(_) => OssErrorKind::Sign,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn build_policy_json(
|
||||
bucket: &str,
|
||||
object_key: &str,
|
||||
@@ -1011,6 +1035,22 @@ fn encode_url_query_value(value: &str) -> String {
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn oss_error_kind_is_stable_for_adapter_mapping() {
|
||||
assert_eq!(
|
||||
OssError::InvalidConfig("bad config".to_string()).kind(),
|
||||
OssErrorKind::InvalidConfig
|
||||
);
|
||||
assert_eq!(
|
||||
OssError::ObjectNotFound("missing".to_string()).kind(),
|
||||
OssErrorKind::ObjectNotFound
|
||||
);
|
||||
assert_eq!(
|
||||
OssError::Request("network".to_string()).kind(),
|
||||
OssErrorKind::Request
|
||||
);
|
||||
}
|
||||
|
||||
fn build_client() -> OssClient {
|
||||
OssClient::new(
|
||||
OssConfig::new(
|
||||
|
||||
Reference in New Issue
Block a user