为 ImageProviderSettings 增加脱敏 Debug 实现

手动实现 Debug 并在其中把 api_key 渲染为 <redacted>

settings() 公开返回该结构体,默认 derive 会让 {:?} 直接打印 provider 凭据
This commit is contained in:
2026-09-19 13:09:58 +08:00
parent 874d061cb9
commit 6c33459b90
@@ -15,7 +15,7 @@ impl ImageProvider {
}
}
#[derive(Clone, Debug)]
#[derive(Clone)]
pub struct ImageProviderSettings {
pub provider: ImageProvider,
pub base_url: String,
@@ -24,6 +24,20 @@ pub struct ImageProviderSettings {
pub request_deadline: Option<std::time::Instant>,
}
impl std::fmt::Debug for ImageProviderSettings {
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
// 中文注释:与 ImageProviderClient 的 Debug 保持一致,避免日志泄漏 api_key。
formatter
.debug_struct("ImageProviderSettings")
.field("provider", &self.provider)
.field("base_url", &self.base_url)
.field("api_key", &"<redacted>")
.field("request_timeout_ms", &self.request_timeout_ms)
.field("request_deadline", &self.request_deadline)
.finish()
}
}
#[derive(Clone)]
pub struct ImageProviderClient {
settings: ImageProviderSettings,