mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-28 09:08:58 +00:00
d56cee26db
* fix * fix * fix * fix delete-marker expiration. add api_restore. * fix * time retry object upload * lock file * make fmt * fix * restore object * fix * fix * serde-rs-xml -> quick-xml * fix * checksum * fix * fix * fix * fix * fix * fix * fix
45 lines
1.3 KiB
Rust
45 lines
1.3 KiB
Rust
// Copyright 2024 RustFS Team
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
#![allow(dead_code)]
|
|
|
|
use base64_simd::STANDARD;
|
|
use std::error::Error;
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct DecodeError(base64_simd::Error);
|
|
|
|
impl Error for DecodeError {
|
|
fn source(&self) -> Option<&(dyn Error + 'static)> {
|
|
Some(&self.0)
|
|
}
|
|
}
|
|
|
|
impl std::fmt::Display for DecodeError {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
write!(f, "failed to decode base64")
|
|
}
|
|
}
|
|
|
|
pub(crate) fn decode(input: impl AsRef<str>) -> Result<Vec<u8>, DecodeError> {
|
|
STANDARD.decode_to_vec(input.as_ref()).map_err(DecodeError)
|
|
}
|
|
|
|
pub(crate) fn encode(input: impl AsRef<[u8]>) -> String {
|
|
STANDARD.encode_to_string(input.as_ref())
|
|
}
|
|
|
|
pub(crate) fn encoded_length(length: usize) -> usize {
|
|
STANDARD.encoded_length(length)
|
|
}
|