This commit is contained in:
2026-01-18 18:07:02 +09:00
commit 1fb80dc850
56 changed files with 6679 additions and 0 deletions

46
src/commands/token.rs Normal file
View File

@@ -0,0 +1,46 @@
use anyhow::{Context, Result};
use serde::{Deserialize, Serialize};
use std::fs;
use std::path::PathBuf;
/// Bundle ID for the application
pub const BUNDLE_ID: &str = "ai.syui.log";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Session {
pub did: String,
pub handle: String,
pub access_jwt: String,
pub refresh_jwt: String,
#[serde(default)]
pub pds: Option<String>,
}
/// Get token file path: ~/Library/Application Support/ai.syui.log/token.json
pub fn token_path() -> Result<PathBuf> {
let config_dir = dirs::config_dir()
.context("Could not find config directory")?
.join(BUNDLE_ID);
fs::create_dir_all(&config_dir)?;
Ok(config_dir.join("token.json"))
}
/// Load session from token file
pub fn load_session() -> Result<Session> {
let path = token_path()?;
let content = fs::read_to_string(&path)
.with_context(|| format!("Token file not found: {:?}. Run 'ailog login' first.", path))?;
let session: Session = serde_json::from_str(&content)?;
Ok(session)
}
/// Save session to token file
pub fn save_session(session: &Session) -> Result<()> {
let path = token_path()?;
let content = serde_json::to_string_pretty(session)?;
fs::write(&path, content)?;
println!("Token saved to {:?}", path);
Ok(())
}