use crate::client::SecureApiKey;
use crate::error::{Error, Result};
use std::env;
pub fn load_api_key_from_env() -> Result<String> {
if let Ok(key) = env::var("OPENROUTER_API_KEY") {
if !key.trim().is_empty() {
return Ok(key);
}
}
if let Ok(key) = env::var("OR_API_KEY") {
if !key.trim().is_empty() {
return Ok(key);
}
}
Err(Error::MissingCredential(
"API key not found in environment variables OPENROUTER_API_KEY or OR_API_KEY".into(),
))
}
pub fn validate_api_key(key: &str) -> Result<()> {
let key = key.trim();
if key.is_empty() {
return Err(Error::ConfigError("API key cannot be empty".into()));
}
if key.len() < 10 {
return Err(Error::ConfigError("API key is too short".into()));
}
Ok(())
}
pub fn load_secure_api_key_from_env() -> Result<SecureApiKey> {
let key_str = load_api_key_from_env()?;
SecureApiKey::new(key_str)
}
#[cfg(test)]
#[path = "auth_tests.rs"]
mod auth_tests;