use clap::Parser; #[cfg(feature = "oauth-discord")] use secrecy::SecretString; use serde::Deserialize; #[cfg(feature = "oauth")] use url::Url; #[derive(Debug, Clone, Parser, Deserialize, Default)] pub struct OAuth { #[cfg(feature = "oauth-discord")] #[command(flatten)] discord: DiscordOauth, #[arg(long, env = "OAUTH_REDIRECT_URL")] oauth_redirect_url: Option, } #[cfg(feature = "oauth-discord")] #[derive(Debug, Clone, Parser, Deserialize, Default)] pub struct DiscordOauth { #[arg(long, env = "OAUTH_DISCORD_CLIENT_ID")] discord_client_id: Option, #[arg(long, env = "OAUTH_DISCORD_CLIENT_SECRET")] discord_client_secret: Option, #[arg( long, env = "OAUTH_DISCORD_TOKEN_URL", default_value = "https://discord.com/api/oauth2/token" )] discord_token_url: Option, #[arg( long, env = "OAUTH_DISCORD_AUTH_URL", default_value = "https://discord.com/api/oauth2/authorize?response_type=code" )] discord_auth_url: Option, }