use std::time::Duration;
pub const DEFAULT_TOKEN_URL: &str = "https://console.anthropic.com/v1/oauth/token";
pub const CLAUDE_CODE_BETA: &str = "claude-code-20250219";
pub const DEFAULT_REFRESH_TIMEOUT: Duration = Duration::from_secs(30);
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct ClaudeCodeOAuthConfig {
pub token_url: String,
pub client_id: Option<String>,
pub refresh_timeout: Duration,
}
impl Default for ClaudeCodeOAuthConfig {
fn default() -> Self {
Self {
token_url: DEFAULT_TOKEN_URL.to_owned(),
client_id: None,
refresh_timeout: DEFAULT_REFRESH_TIMEOUT,
}
}
}
impl ClaudeCodeOAuthConfig {
#[must_use]
pub fn new() -> Self {
Self::default()
}
#[must_use]
pub fn with_token_url(mut self, url: impl Into<String>) -> Self {
self.token_url = url.into();
self
}
#[must_use]
pub fn with_client_id(mut self, client_id: impl Into<String>) -> Self {
self.client_id = Some(client_id.into());
self
}
#[must_use]
pub const fn with_refresh_timeout(mut self, timeout: Duration) -> Self {
self.refresh_timeout = timeout;
self
}
}