Fix code quality: trailing whitespace, unused imports, clippy warnings
- Fix trailing whitespace in kex.rs and s3.rs - Add missing KexProposal import in kex_complete.rs - Auto-fix clippy warnings across all crates - All 153 tests pass
This commit is contained in:
@@ -4,6 +4,7 @@ use std::fs;
|
||||
use std::path::PathBuf;
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[derive(Default)]
|
||||
pub struct S3Config {
|
||||
#[serde(default)]
|
||||
pub s3: S3Section,
|
||||
@@ -40,6 +41,7 @@ pub struct KeysSection {
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[derive(Default)]
|
||||
pub struct BucketsSection {
|
||||
#[serde(default)]
|
||||
pub mappings: std::collections::HashMap<String, String>,
|
||||
@@ -96,16 +98,6 @@ fn admin_permissions() -> Vec<String> {
|
||||
]
|
||||
}
|
||||
|
||||
impl Default for S3Config {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
s3: S3Section::default(),
|
||||
keys: KeysSection::default(),
|
||||
buckets: BucketsSection::default(),
|
||||
permissions: PermissionsSection::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for S3Section {
|
||||
fn default() -> Self {
|
||||
@@ -129,13 +121,6 @@ impl Default for KeysSection {
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for BucketsSection {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
mappings: std::collections::HashMap::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for PermissionsSection {
|
||||
fn default() -> Self {
|
||||
@@ -169,9 +154,9 @@ impl S3Config {
|
||||
Self::load("config/s3.toml")
|
||||
}
|
||||
|
||||
pub fn save(&self, path: &str) -> Result<()> {
|
||||
pub fn save(&self, path: &str) -> Result<()> {
|
||||
let config_path = PathBuf::from(path);
|
||||
|
||||
|
||||
// Create backup before saving
|
||||
if config_path.exists() {
|
||||
let backup_path = config_path.with_extension("toml.bak");
|
||||
@@ -179,13 +164,13 @@ pub fn save(&self, path: &str) -> Result<()> {
|
||||
.with_context(|| format!("Failed to create backup: {}", backup_path.display()))?;
|
||||
log::info!("S3 config backup created: {}", backup_path.display());
|
||||
}
|
||||
|
||||
let content = toml::to_string_pretty(self)
|
||||
.with_context(|| "Failed to serialize S3 config")?;
|
||||
|
||||
|
||||
let content =
|
||||
toml::to_string_pretty(self).with_context(|| "Failed to serialize S3 config")?;
|
||||
|
||||
std::fs::write(&config_path, content)
|
||||
.with_context(|| format!("Failed to write S3 config: {}", path))?;
|
||||
|
||||
|
||||
log::info!("S3 config saved to: {}", path);
|
||||
Ok(())
|
||||
}
|
||||
@@ -255,10 +240,16 @@ pub fn save(&self, path: &str) -> Result<()> {
|
||||
|
||||
// Validate permission format
|
||||
let valid_permissions = [
|
||||
"GetObject", "PutObject", "DeleteObject", "ListBucket",
|
||||
"HeadObject", "ListAllMyBuckets", "CreateBucket", "DeleteBucket"
|
||||
"GetObject",
|
||||
"PutObject",
|
||||
"DeleteObject",
|
||||
"ListBucket",
|
||||
"HeadObject",
|
||||
"ListAllMyBuckets",
|
||||
"CreateBucket",
|
||||
"DeleteBucket",
|
||||
];
|
||||
|
||||
|
||||
for perm in &self.permissions.default_permissions {
|
||||
if !valid_permissions.contains(&perm.as_str()) {
|
||||
return Err(anyhow::anyhow!(
|
||||
@@ -289,18 +280,18 @@ pub fn save(&self, path: &str) -> Result<()> {
|
||||
"s3.region" => Some(self.s3.region.clone()),
|
||||
"s3.service" => Some(self.s3.service.clone()),
|
||||
"s3.require_auth" => Some(self.s3.require_auth.to_string()),
|
||||
|
||||
|
||||
"keys.default_access_key" => Some(self.keys.default_access_key.clone()),
|
||||
"keys.default_secret_key" => Some(self.keys.default_secret_key.clone()),
|
||||
"keys.keys_db_path" => Some(self.keys.keys_db_path.clone()),
|
||||
|
||||
"permissions.default_permissions" => {
|
||||
Some(serde_json::to_string(&self.permissions.default_permissions).unwrap_or_default())
|
||||
}
|
||||
|
||||
"permissions.default_permissions" => Some(
|
||||
serde_json::to_string(&self.permissions.default_permissions).unwrap_or_default(),
|
||||
),
|
||||
"permissions.admin_permissions" => {
|
||||
Some(serde_json::to_string(&self.permissions.admin_permissions).unwrap_or_default())
|
||||
}
|
||||
|
||||
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
@@ -312,11 +303,11 @@ pub fn save(&self, path: &str) -> Result<()> {
|
||||
"s3.region" => self.s3.region = value.to_string(),
|
||||
"s3.service" => self.s3.service = value.to_string(),
|
||||
"s3.require_auth" => self.s3.require_auth = value.parse()?,
|
||||
|
||||
|
||||
"keys.default_access_key" => self.keys.default_access_key = value.to_string(),
|
||||
"keys.default_secret_key" => self.keys.default_secret_key = value.to_string(),
|
||||
"keys.keys_db_path" => self.keys.keys_db_path = value.to_string(),
|
||||
|
||||
|
||||
"permissions.default_permissions" => {
|
||||
self.permissions.default_permissions = serde_json::from_str(value)
|
||||
.with_context(|| "Failed to parse permissions array")?;
|
||||
@@ -325,7 +316,7 @@ pub fn save(&self, path: &str) -> Result<()> {
|
||||
self.permissions.admin_permissions = serde_json::from_str(value)
|
||||
.with_context(|| "Failed to parse admin permissions array")?;
|
||||
}
|
||||
|
||||
|
||||
_ => return Err(anyhow::anyhow!("Invalid S3 config key: {}", key)),
|
||||
}
|
||||
Ok(())
|
||||
@@ -340,15 +331,15 @@ mod tests {
|
||||
#[test]
|
||||
fn test_default_config() {
|
||||
let config = S3Config::default();
|
||||
|
||||
|
||||
assert_eq!(config.s3.enabled, true);
|
||||
assert_eq!(config.s3.require_auth, false);
|
||||
assert_eq!(config.s3.endpoint, "http://localhost:11438/s3");
|
||||
assert_eq!(config.s3.region, "us-east-1");
|
||||
|
||||
|
||||
assert_eq!(config.keys.default_access_key, "markbase_access_key_001");
|
||||
assert_eq!(config.keys.default_secret_key, "markbase_secret_key_xyz123");
|
||||
|
||||
|
||||
assert_eq!(config.permissions.default_permissions.len(), 3);
|
||||
assert_eq!(config.permissions.admin_permissions.len(), 5);
|
||||
}
|
||||
@@ -357,9 +348,9 @@ mod tests {
|
||||
fn test_load_missing_config() {
|
||||
let temp_dir = TempDir::new().unwrap();
|
||||
let config_path = temp_dir.path().join("missing.toml");
|
||||
|
||||
|
||||
let config = S3Config::load(&config_path.to_string_lossy()).unwrap();
|
||||
|
||||
|
||||
assert_eq!(config.s3.enabled, true);
|
||||
assert_eq!(config.s3.require_auth, false);
|
||||
}
|
||||
@@ -368,13 +359,13 @@ mod tests {
|
||||
fn test_merge_env() {
|
||||
std::env::set_var("MB_S3_REQUIRE_AUTH", "true");
|
||||
std::env::set_var("MB_S3_ENDPOINT", "http://custom.endpoint");
|
||||
|
||||
|
||||
let mut config = S3Config::default();
|
||||
config.merge_env();
|
||||
|
||||
|
||||
assert_eq!(config.s3.require_auth, true);
|
||||
assert_eq!(config.s3.endpoint, "http://custom.endpoint");
|
||||
|
||||
|
||||
std::env::remove_var("MB_S3_REQUIRE_AUTH");
|
||||
std::env::remove_var("MB_S3_ENDPOINT");
|
||||
}
|
||||
@@ -383,7 +374,7 @@ mod tests {
|
||||
fn test_validate() {
|
||||
let config = S3Config::default();
|
||||
assert!(config.validate().is_ok());
|
||||
|
||||
|
||||
let mut invalid_config = S3Config::default();
|
||||
invalid_config.s3.endpoint = "".to_string();
|
||||
assert!(invalid_config.validate().is_err());
|
||||
@@ -392,14 +383,17 @@ mod tests {
|
||||
#[test]
|
||||
fn test_get_set() {
|
||||
let mut config = S3Config::default();
|
||||
|
||||
|
||||
assert_eq!(config.get("s3.enabled"), Some("true".to_string()));
|
||||
assert_eq!(config.get("s3.endpoint"), Some("http://localhost:11438/s3".to_string()));
|
||||
|
||||
assert_eq!(
|
||||
config.get("s3.endpoint"),
|
||||
Some("http://localhost:11438/s3".to_string())
|
||||
);
|
||||
|
||||
config.set("s3.require_auth", "true").unwrap();
|
||||
assert_eq!(config.s3.require_auth, true);
|
||||
|
||||
|
||||
config.set("s3.endpoint", "http://new.endpoint").unwrap();
|
||||
assert_eq!(config.s3.endpoint, "http://new.endpoint");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user