为 ImageProviderSettings 增加脱敏 Debug 实现
手动实现 Debug 并在其中把 api_key 渲染为 <redacted>
settings() 公开返回该结构体,默认 derive 会让 {:?} 直接打印 provider 凭据
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user