use std::path::PathBuf;
const DEFAULT_API_URL: &str = "https://mcp.falsegreen.com/v1/mcp";
pub fn api_url() -> String {
std::env::var("FALSEGREEN_API_URL").unwrap_or_else(|_| DEFAULT_API_URL.to_string())
}
pub fn config_dir() -> PathBuf {
dirs::config_dir()
.unwrap_or_else(|| PathBuf::from("/tmp"))
.join("falsegreen")
}
pub fn credentials_path() -> PathBuf {
config_dir().join("credentials.toml")
}
pub fn load_token() -> Option<String> {
if let Ok(key) = std::env::var("FALSEGREEN_KEY") {
if !key.is_empty() {
return Some(key);
}
}
let path = credentials_path();
let content = std::fs::read_to_string(&path).ok()?;
let parsed: toml::Value = toml::from_str(&content).ok()?;
parsed
.get("token")
.and_then(|v| v.as_str())
.map(|s| s.to_string())
}
pub fn save_credentials(token: &str, activation_id: &str) -> std::io::Result<()> {
let dir = config_dir();
std::fs::create_dir_all(&dir)?;
let content = format!(
"token = \"{}\"\nactivation_id = \"{}\"\n",
token, activation_id
);
std::fs::write(credentials_path(), content)
}
pub fn load_activation_id() -> Option<String> {
let path = credentials_path();
let content = std::fs::read_to_string(&path).ok()?;
let parsed: toml::Value = toml::from_str(&content).ok()?;
parsed
.get("activation_id")
.and_then(|v| v.as_str())
.map(|s| s.to_string())
}
pub fn clear_token() -> std::io::Result<()> {
let path = credentials_path();
if path.exists() {
std::fs::remove_file(path)?;
}
Ok(())
}