use std::collections::HashMap; use serde::{Deserialize, Serialize}; use url::Url; #[derive( Clone, Serialize, Deserialize, derive_more::From, derive_more::Deref, PartialEq, Eq, Debug, )] #[serde(transparent)] pub struct ClientId(String); /// OAuth configuration for authentication flows #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct OAuthConfig { pub auth_url: Url, pub token_url: Url, pub client_id: ClientId, pub scopes: Vec, #[serde(skip_serializing_if = "Option::is_none")] pub redirect_uri: Option, #[serde(default)] pub use_pkce: bool, #[serde(skip_serializing_if = "Option::is_none")] pub token_refresh_url: Option, #[serde(skip_serializing_if = "Option::is_none")] pub custom_headers: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub extra_auth_params: Option>, }