mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-09 06:39:25 +00:00
fix:Apply suggestions from clippy 1.88
This commit is contained in:
@@ -217,7 +217,7 @@ impl Operation for AccountInfoHandler {
|
||||
let policies = iam_store
|
||||
.policy_db_get(&account_name, &cred.groups)
|
||||
.await
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("get policy failed: {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("get policy failed: {e}")))?;
|
||||
|
||||
effective_policy = iam_store.get_combined_policy(&policies).await;
|
||||
};
|
||||
@@ -1036,6 +1036,6 @@ mod test {
|
||||
fn test_decode() {
|
||||
let b = b"{\"recursive\":false,\"dryRun\":false,\"remove\":false,\"recreate\":false,\"scanMode\":1,\"updateParity\":false,\"nolock\":false}";
|
||||
let s: HealOpts = serde_urlencoded::from_bytes(b).unwrap();
|
||||
println!("{:?}", s);
|
||||
println!("{s:?}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ impl Operation for UpdateGroupMembers {
|
||||
};
|
||||
|
||||
let args: GroupAddRemove = serde_json::from_slice(&body)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("unmarshal body err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("unmarshal body err {e}")))?;
|
||||
|
||||
warn!("UpdateGroupMembers args {:?}", args);
|
||||
|
||||
@@ -148,7 +148,7 @@ impl Operation for UpdateGroupMembers {
|
||||
if is_temp {
|
||||
return Err(S3Error::with_message(
|
||||
S3ErrorCode::MethodNotAllowed,
|
||||
format!("can't add temp user {}", member),
|
||||
format!("can't add temp user {member}"),
|
||||
));
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ impl Operation for UpdateGroupMembers {
|
||||
if cred.access_key == *member {
|
||||
return Err(S3Error::with_message(
|
||||
S3ErrorCode::MethodNotAllowed,
|
||||
format!("can't add root {}", member),
|
||||
format!("can't add root {member}"),
|
||||
));
|
||||
}
|
||||
Ok(())
|
||||
|
||||
@@ -498,7 +498,7 @@ impl Operation for ListServiceAccount {
|
||||
.collect();
|
||||
|
||||
let data = serde_json::to_vec(&ListServiceAccountsResp { accounts })
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal users err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal users err {e}")))?;
|
||||
|
||||
let mut header = HeaderMap::new();
|
||||
header.insert(CONTENT_TYPE, "application/json".parse().unwrap());
|
||||
|
||||
@@ -111,7 +111,7 @@ impl Operation for AssumeRoleHandle {
|
||||
info!("AssumeRole get claims {:?}", &claims);
|
||||
|
||||
let mut new_cred = get_new_credentials_with_metadata(&claims, &secret)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("get new cred failed {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("get new cred failed {e}")))?;
|
||||
|
||||
new_cred.parent_user = cred.access_key.clone();
|
||||
|
||||
@@ -147,13 +147,13 @@ impl Operation for AssumeRoleHandle {
|
||||
pub fn populate_session_policy(claims: &mut HashMap<String, Value>, policy: &str) -> S3Result<()> {
|
||||
if !policy.is_empty() {
|
||||
let session_policy = Policy::parse_config(policy.as_bytes())
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("parse policy err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("parse policy err {e}")))?;
|
||||
if session_policy.version.is_empty() {
|
||||
return Err(s3_error!(InvalidRequest, "invalid policy"));
|
||||
}
|
||||
|
||||
let policy_buf = serde_json::to_vec(&session_policy)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal policy err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal policy err {e}")))?;
|
||||
|
||||
if policy_buf.len() > 2048 {
|
||||
return Err(s3_error!(InvalidRequest, "policy too large"));
|
||||
|
||||
@@ -84,7 +84,7 @@ impl Operation for AddTier {
|
||||
};
|
||||
|
||||
let mut args: TierConfig = serde_json::from_slice(&body)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("unmarshal body err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("unmarshal body err {e}")))?;
|
||||
|
||||
match args.tier_type {
|
||||
TierType::S3 => {
|
||||
@@ -202,7 +202,7 @@ impl Operation for EditTier {
|
||||
};
|
||||
|
||||
let creds: TierCreds = serde_json::from_slice(&body)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("unmarshal body err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("unmarshal body err {e}")))?;
|
||||
|
||||
debug!("edit tier args {:?}", creds);
|
||||
|
||||
@@ -264,7 +264,7 @@ impl Operation for ListTiers {
|
||||
let tiers = tier_config_mgr.list_tiers();
|
||||
|
||||
let data = serde_json::to_vec(&tiers)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal tiers err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal tiers err {e}")))?;
|
||||
|
||||
let mut header = HeaderMap::new();
|
||||
header.insert(CONTENT_TYPE, "application/json".parse().unwrap());
|
||||
@@ -397,7 +397,7 @@ impl Operation for GetTierInfo {
|
||||
let info = tier_config_mgr.get(&query.tier.unwrap());
|
||||
|
||||
let data = serde_json::to_vec(&info)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal tier err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal tier err {e}")))?;
|
||||
|
||||
let mut header = HeaderMap::new();
|
||||
header.insert(CONTENT_TYPE, "application/json".parse().unwrap());
|
||||
|
||||
@@ -63,7 +63,7 @@ impl Operation for AddUser {
|
||||
// .map_err(|e| S3Error::with_message(S3ErrorCode::InvalidArgument, format!("decrypt_data err {}", e)))?;
|
||||
|
||||
let args: AddOrUpdateUserReq = serde_json::from_slice(&body)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("unmarshal body err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("unmarshal body err {e}")))?;
|
||||
|
||||
if args.secret_key.is_empty() {
|
||||
return Err(s3_error!(InvalidArgument, "access key is empty"));
|
||||
@@ -111,7 +111,7 @@ impl Operation for AddUser {
|
||||
iam_store
|
||||
.create_user(ak, &args)
|
||||
.await
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("create_user err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("create_user err {e}")))?;
|
||||
|
||||
let mut header = HeaderMap::new();
|
||||
header.insert(CONTENT_TYPE, "application/json".parse().unwrap());
|
||||
@@ -156,7 +156,7 @@ impl Operation for SetUserStatus {
|
||||
iam_store
|
||||
.set_user_status(ak, status)
|
||||
.await
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("set_user_status err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("set_user_status err {e}")))?;
|
||||
|
||||
let mut header = HeaderMap::new();
|
||||
header.insert(CONTENT_TYPE, "application/json".parse().unwrap());
|
||||
@@ -201,7 +201,7 @@ impl Operation for ListUsers {
|
||||
};
|
||||
|
||||
let data = serde_json::to_vec(&users)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal users err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal users err {e}")))?;
|
||||
|
||||
// let Some(input_cred) = req.credentials else {
|
||||
// return Err(s3_error!(InvalidRequest, "get cred failed"));
|
||||
@@ -242,7 +242,7 @@ impl Operation for RemoveUser {
|
||||
let (is_temp, _) = iam_store
|
||||
.is_temp_user(ak)
|
||||
.await
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("is_temp_user err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("is_temp_user err {e}")))?;
|
||||
|
||||
if is_temp {
|
||||
return Err(s3_error!(InvalidArgument, "can't remove temp user"));
|
||||
@@ -269,7 +269,7 @@ impl Operation for RemoveUser {
|
||||
iam_store
|
||||
.delete_user(ak, true)
|
||||
.await
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("delete_user err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("delete_user err {e}")))?;
|
||||
|
||||
let mut header = HeaderMap::new();
|
||||
header.insert(CONTENT_TYPE, "application/json".parse().unwrap());
|
||||
@@ -332,7 +332,7 @@ impl Operation for GetUserInfo {
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, e.to_string()))?;
|
||||
|
||||
let data = serde_json::to_vec(&info)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal user err {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("marshal user err {e}")))?;
|
||||
|
||||
let mut header = HeaderMap::new();
|
||||
header.insert(CONTENT_TYPE, "application/json".parse().unwrap());
|
||||
|
||||
+2
-2
@@ -69,7 +69,7 @@ pub async fn check_key_valid(session_token: &str, access_key: &str) -> S3Result<
|
||||
let (u, ok) = iam_store
|
||||
.check_key(access_key)
|
||||
.await
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("check claims failed1 {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("check claims failed1 {e}")))?;
|
||||
|
||||
if !ok {
|
||||
if let Some(u) = u {
|
||||
@@ -89,7 +89,7 @@ pub async fn check_key_valid(session_token: &str, access_key: &str) -> S3Result<
|
||||
}
|
||||
|
||||
let claims = check_claims_from_token(session_token, &cred)
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("check claims failed {}", e)))?;
|
||||
.map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("check claims failed {e}")))?;
|
||||
|
||||
cred.claims = if !claims.is_empty() { Some(claims) } else { None };
|
||||
|
||||
|
||||
@@ -78,10 +78,10 @@ impl Config {
|
||||
Config {
|
||||
port,
|
||||
api: Api {
|
||||
base_url: format!("http://{}:{}/{}", local_ip, port, RUSTFS_ADMIN_PREFIX),
|
||||
base_url: format!("http://{local_ip}:{port}/{RUSTFS_ADMIN_PREFIX}"),
|
||||
},
|
||||
s3: S3 {
|
||||
endpoint: format!("http://{}:{}", local_ip, port),
|
||||
endpoint: format!("http://{local_ip}:{port}"),
|
||||
region: "cn-east-1".to_owned(),
|
||||
},
|
||||
release: Release {
|
||||
@@ -209,7 +209,7 @@ async fn config_handler(uri: Uri, Host(host): Host) -> impl IntoResponse {
|
||||
let mut cfg = CONSOLE_CONFIG.get().unwrap().clone();
|
||||
|
||||
let url = format!("{}://{}:{}", scheme, host, cfg.port);
|
||||
cfg.api.base_url = format!("{}{}", url, RUSTFS_ADMIN_PREFIX);
|
||||
cfg.api.base_url = format!("{url}{RUSTFS_ADMIN_PREFIX}");
|
||||
cfg.s3.endpoint = url;
|
||||
|
||||
Response::builder()
|
||||
@@ -259,8 +259,8 @@ pub async fn start_static_file_server(
|
||||
}
|
||||
async fn start_server(server_addr: SocketAddr, tls_path: Option<String>, app: Router) -> io::Result<()> {
|
||||
let tls_path = tls_path.unwrap_or_default();
|
||||
let key_path = format!("{}/{}", tls_path, RUSTFS_TLS_KEY);
|
||||
let cert_path = format!("{}/{}", tls_path, RUSTFS_TLS_CERT);
|
||||
let key_path = format!("{tls_path}/{RUSTFS_TLS_KEY}");
|
||||
let cert_path = format!("{tls_path}/{RUSTFS_TLS_CERT}");
|
||||
let handle = axum_server::Handle::new();
|
||||
// create a signal off listening task
|
||||
let handle_clone = handle.clone();
|
||||
@@ -310,7 +310,7 @@ fn redirect_to_https(https_port: u16) -> Router {
|
||||
.get("host")
|
||||
.map_or("localhost", |h| h.to_str().unwrap_or("localhost"));
|
||||
let path = uri.path_and_query().map(|pq| pq.as_str()).unwrap_or("");
|
||||
let https_url = format!("https://{}:{}{}", host, https_port, path);
|
||||
let https_url = format!("https://{host}:{https_port}{path}");
|
||||
Redirect::permanent(&https_url)
|
||||
}
|
||||
}),
|
||||
|
||||
+1
-1
@@ -268,7 +268,7 @@ mod tests {
|
||||
source: Some(Box::new(IoError::new(ErrorKind::NotFound, "file not found"))),
|
||||
};
|
||||
|
||||
let debug_str = format!("{:?}", api_error);
|
||||
let debug_str = format!("{api_error:?}");
|
||||
assert!(debug_str.contains("NoSuchKey"));
|
||||
assert!(debug_str.contains("Object not found"));
|
||||
}
|
||||
|
||||
+4
-4
@@ -158,8 +158,8 @@ async fn run(opt: config::Opt) -> Result<()> {
|
||||
}
|
||||
|
||||
// Detailed endpoint information (showing all API endpoints)
|
||||
let api_endpoints = format!("http://{}:{}", local_ip, server_port);
|
||||
let localhost_endpoint = format!("http://127.0.0.1:{}", server_port);
|
||||
let api_endpoints = format!("http://{local_ip}:{server_port}");
|
||||
let localhost_endpoint = format!("http://127.0.0.1:{server_port}");
|
||||
info!(" API: {} {}", api_endpoints, localhost_endpoint);
|
||||
info!(" RootUser: {}", opt.access_key.clone());
|
||||
info!(" RootPass: {}", opt.secret_key.clone());
|
||||
@@ -264,8 +264,8 @@ async fn run(opt: config::Opt) -> Result<()> {
|
||||
}
|
||||
_ => {
|
||||
// 2. If the synthesis fails, fall back to the traditional document certificate mode (backward compatible)
|
||||
let key_path = format!("{}/{}", tls_path, RUSTFS_TLS_KEY);
|
||||
let cert_path = format!("{}/{}", tls_path, RUSTFS_TLS_CERT);
|
||||
let key_path = format!("{tls_path}/{RUSTFS_TLS_KEY}");
|
||||
let cert_path = format!("{tls_path}/{RUSTFS_TLS_CERT}");
|
||||
let has_single_cert =
|
||||
tokio::try_join!(tokio::fs::metadata(key_path.clone()), tokio::fs::metadata(cert_path.clone())).is_ok();
|
||||
|
||||
|
||||
+17
-17
@@ -174,7 +174,7 @@ impl FS {
|
||||
let f = match entry {
|
||||
Ok(f) => f,
|
||||
Err(e) => {
|
||||
println!("Error reading entry: {}", e);
|
||||
println!("Error reading entry: {e}");
|
||||
return Err(s3_error!(InvalidArgument, "Error reading entry {:?}", e));
|
||||
}
|
||||
};
|
||||
@@ -187,12 +187,12 @@ impl FS {
|
||||
let mut fpath = fpath.to_string_lossy().to_string();
|
||||
|
||||
if !prefix.is_empty() {
|
||||
fpath = format!("{}/{}", prefix, fpath);
|
||||
fpath = format!("{prefix}/{fpath}");
|
||||
}
|
||||
|
||||
let mut size = f.header().size().unwrap_or_default() as i64;
|
||||
|
||||
println!("Extracted: {}, size {}", fpath, size);
|
||||
println!("Extracted: {fpath}, size {size}");
|
||||
|
||||
let mut reader: Box<dyn Reader> = Box::new(WarpReader::new(f));
|
||||
|
||||
@@ -202,10 +202,10 @@ impl FS {
|
||||
|
||||
if is_compressible(&HeaderMap::new(), &fpath) && size > MIN_COMPRESSIBLE_SIZE as i64 {
|
||||
metadata.insert(
|
||||
format!("{}compression", RESERVED_METADATA_PREFIX_LOWER),
|
||||
format!("{RESERVED_METADATA_PREFIX_LOWER}compression"),
|
||||
CompressionAlgorithm::default().to_string(),
|
||||
);
|
||||
metadata.insert(format!("{}actual-size", RESERVED_METADATA_PREFIX_LOWER,), size.to_string());
|
||||
metadata.insert(format!("{RESERVED_METADATA_PREFIX_LOWER}actual-size",), size.to_string());
|
||||
|
||||
let hrd = HashReader::new(reader, size, actual_size, None, false).map_err(ApiError::from)?;
|
||||
|
||||
@@ -372,10 +372,10 @@ impl S3 for FS {
|
||||
|
||||
if is_compressible(&req.headers, &key) && actual_size > MIN_COMPRESSIBLE_SIZE as i64 {
|
||||
compress_metadata.insert(
|
||||
format!("{}compression", RESERVED_METADATA_PREFIX_LOWER),
|
||||
format!("{RESERVED_METADATA_PREFIX_LOWER}compression"),
|
||||
CompressionAlgorithm::default().to_string(),
|
||||
);
|
||||
compress_metadata.insert(format!("{}actual-size", RESERVED_METADATA_PREFIX_LOWER,), actual_size.to_string());
|
||||
compress_metadata.insert(format!("{RESERVED_METADATA_PREFIX_LOWER}actual-size",), actual_size.to_string());
|
||||
|
||||
let hrd = EtagReader::new(reader, None);
|
||||
|
||||
@@ -386,13 +386,13 @@ impl S3 for FS {
|
||||
} else {
|
||||
src_info
|
||||
.user_defined
|
||||
.remove(&format!("{}compression", RESERVED_METADATA_PREFIX_LOWER));
|
||||
.remove(&format!("{RESERVED_METADATA_PREFIX_LOWER}compression"));
|
||||
src_info
|
||||
.user_defined
|
||||
.remove(&format!("{}actual-size", RESERVED_METADATA_PREFIX_LOWER));
|
||||
.remove(&format!("{RESERVED_METADATA_PREFIX_LOWER}actual-size"));
|
||||
src_info
|
||||
.user_defined
|
||||
.remove(&format!("{}compression-size", RESERVED_METADATA_PREFIX_LOWER));
|
||||
.remove(&format!("{RESERVED_METADATA_PREFIX_LOWER}compression-size"));
|
||||
}
|
||||
|
||||
let hrd = HashReader::new(reader, length, actual_size, None, false).map_err(ApiError::from)?;
|
||||
@@ -1067,10 +1067,10 @@ impl S3 for FS {
|
||||
|
||||
if is_compressible(&req.headers, &key) && size > MIN_COMPRESSIBLE_SIZE as i64 {
|
||||
metadata.insert(
|
||||
format!("{}compression", RESERVED_METADATA_PREFIX_LOWER),
|
||||
format!("{RESERVED_METADATA_PREFIX_LOWER}compression"),
|
||||
CompressionAlgorithm::default().to_string(),
|
||||
);
|
||||
metadata.insert(format!("{}actual-size", RESERVED_METADATA_PREFIX_LOWER,), size.to_string());
|
||||
metadata.insert(format!("{RESERVED_METADATA_PREFIX_LOWER}actual-size",), size.to_string());
|
||||
|
||||
let hrd = HashReader::new(reader, size as i64, size as i64, None, false).map_err(ApiError::from)?;
|
||||
|
||||
@@ -1157,7 +1157,7 @@ impl S3 for FS {
|
||||
|
||||
if is_compressible(&req.headers, &key) {
|
||||
metadata.insert(
|
||||
format!("{}compression", RESERVED_METADATA_PREFIX_LOWER),
|
||||
format!("{RESERVED_METADATA_PREFIX_LOWER}compression"),
|
||||
CompressionAlgorithm::default().to_string(),
|
||||
);
|
||||
}
|
||||
@@ -1230,7 +1230,7 @@ impl S3 for FS {
|
||||
|
||||
let is_compressible = fi
|
||||
.user_defined
|
||||
.contains_key(format!("{}compression", RESERVED_METADATA_PREFIX_LOWER).as_str());
|
||||
.contains_key(format!("{RESERVED_METADATA_PREFIX_LOWER}compression").as_str());
|
||||
|
||||
let mut reader: Box<dyn Reader> = Box::new(WarpReader::new(body));
|
||||
|
||||
@@ -2166,7 +2166,7 @@ impl S3 for FS {
|
||||
};
|
||||
|
||||
if let Err(e) = store.get_object_info(&bucket, &key, &ObjectOptions::default()).await {
|
||||
return Err(S3Error::with_message(S3ErrorCode::InternalError, format!("{}", e)));
|
||||
return Err(S3Error::with_message(S3ErrorCode::InternalError, format!("{e}")));
|
||||
}
|
||||
|
||||
let grants = vec![Grant {
|
||||
@@ -2201,7 +2201,7 @@ impl S3 for FS {
|
||||
.get_object_reader(&bucket, &key, None, HeaderMap::new(), &ObjectOptions::default())
|
||||
.await
|
||||
{
|
||||
return Err(S3Error::with_message(S3ErrorCode::InternalError, format!("{}", e)));
|
||||
return Err(S3Error::with_message(S3ErrorCode::InternalError, format!("{e}")));
|
||||
}
|
||||
|
||||
Ok(S3Response::new(GetObjectAttributesOutput {
|
||||
@@ -2225,7 +2225,7 @@ impl S3 for FS {
|
||||
};
|
||||
|
||||
if let Err(e) = store.get_object_info(&bucket, &key, &ObjectOptions::default()).await {
|
||||
return Err(S3Error::with_message(S3ErrorCode::InternalError, format!("{}", e)));
|
||||
return Err(S3Error::with_message(S3ErrorCode::InternalError, format!("{e}")));
|
||||
}
|
||||
|
||||
if let Some(canned_acl) = acl {
|
||||
|
||||
Reference in New Issue
Block a user