diff options
author | Alex Auvolat <alex@adnab.me> | 2022-05-13 15:43:44 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2022-05-13 15:43:44 +0200 |
commit | ec16d166f940f59098ae5cc0c0b3d8298f1bcc78 (patch) | |
tree | 3dc5a6c7e655df875aa12aa86b6316f7948d51c1 /src/api/s3 | |
parent | 7a5d329e49cc7018cbfa14d37589f51860f66cf0 (diff) | |
download | garage-ec16d166f940f59098ae5cc0c0b3d8298f1bcc78.tar.gz garage-ec16d166f940f59098ae5cc0c0b3d8298f1bcc78.zip |
Separate error types for k2v and signature
Diffstat (limited to 'src/api/s3')
-rw-r--r-- | src/api/s3/api_server.rs | 3 | ||||
-rw-r--r-- | src/api/s3/error.rs | 13 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/api/s3/api_server.rs b/src/api/s3/api_server.rs index 6b565fd0..4df9ee6d 100644 --- a/src/api/s3/api_server.rs +++ b/src/api/s3/api_server.rs @@ -119,7 +119,8 @@ impl ApiHandler for S3ApiServer { return handle_post_object(garage, req, bucket_name.unwrap()).await; } if let Endpoint::Options = endpoint { - return handle_options_s3api(garage, &req, bucket_name).await; + return handle_options_s3api(garage, &req, bucket_name).await + .map_err(Error::from); } let (api_key, mut content_sha256) = check_payload_signature(&garage, "s3", &req).await?; diff --git a/src/api/s3/error.rs b/src/api/s3/error.rs index 3cb97019..a0c4703c 100644 --- a/src/api/s3/error.rs +++ b/src/api/s3/error.rs @@ -11,6 +11,7 @@ use crate::common_error::CommonError; pub use crate::common_error::{OkOrBadRequest, OkOrInternalError}; use crate::generic_server::ApiError; use crate::s3::xml as s3_xml; +use crate::signature::error::Error as SignatureError; /// Errors of this crate #[derive(Debug, Error)] @@ -134,6 +135,18 @@ impl From<HelperError> for Error { } } +impl From<SignatureError> for Error { + fn from(err: SignatureError) -> Self { + match err { + SignatureError::CommonError(c) => Self::CommonError(c), + SignatureError::AuthorizationHeaderMalformed(c) => Self::AuthorizationHeaderMalformed(c), + SignatureError::Forbidden(f) => Self::Forbidden(f), + SignatureError::InvalidUtf8Str(i) => Self::InvalidUtf8Str(i), + SignatureError::InvalidHeader(h) => Self::InvalidHeader(h), + } + } +} + impl From<multer::Error> for Error { fn from(err: multer::Error) -> Self { Self::bad_request(err) |