use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuthConfig {
pub method: AuthMethod,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum AuthMethod {
None,
ApiKey { key: String },
Bearer { token: String },
MutualTls {
cert_path: String,
key_path: String,
ca_path: Option<String>,
},
OAuth {
client_id: String,
client_secret: String,
token_url: String,
},
}
impl Default for AuthConfig {
fn default() -> Self {
Self {
method: AuthMethod::None,
}
}
}
impl AuthConfig {
pub fn none() -> Self {
Self {
method: AuthMethod::None,
}
}
pub fn api_key(key: impl Into<String>) -> Self {
Self {
method: AuthMethod::ApiKey { key: key.into() },
}
}
pub fn bearer(token: impl Into<String>) -> Self {
Self {
method: AuthMethod::Bearer {
token: token.into(),
},
}
}
}