From 7b8e34d99098c3b0a2dcc94a3ee0540b27c605cd Mon Sep 17 00:00:00 2001 From: syui Date: Mon, 30 Mar 2026 14:48:04 +0900 Subject: [PATCH] add pds --- src/commands/pds.rs | 29 +++++++++++++++++++++++++++++ src/main.rs | 10 ++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/commands/pds.rs b/src/commands/pds.rs index 9e35165..9dd0d2b 100644 --- a/src/commands/pds.rs +++ b/src/commands/pds.rs @@ -73,6 +73,35 @@ fn load_networks(networks_path: &str) -> Result> { Ok(serde_json::from_str(DEFAULT_NETWORKS)?) } +/// Show current session info (PDS, DID, handle) +pub fn show_session(is_bot: bool) -> Result<()> { + use super::oauth; + use super::token; + + let has_oauth = oauth::has_oauth_session(is_bot); + let session = if is_bot { + token::load_bot_session()? + } else { + token::load_session()? + }; + + let mut info = serde_json::json!({ + "did": session.did, + "handle": session.handle, + "pds": session.pds.as_deref().unwrap_or("bsky.social"), + "auth": if has_oauth { "oauth" } else { "legacy" }, + }); + + if has_oauth { + if let Ok(oauth_session) = oauth::load_oauth_session(is_bot) { + info["issuer"] = serde_json::json!(oauth_session.issuer); + } + } + + println!("{}", serde_json::to_string_pretty(&info)?); + Ok(()) +} + pub async fn check_versions(networks_path: &str) -> Result<()> { let networks = load_networks(networks_path)?; diff --git a/src/main.rs b/src/main.rs index e84b9bb..d0e8f53 100644 --- a/src/main.rs +++ b/src/main.rs @@ -362,6 +362,13 @@ enum PdsCommands { #[arg(short, long, default_value = "public/networks.json")] networks: String, }, + /// Show current session info (PDS, DID, handle) + #[command(alias = "s")] + Session { + /// Show bot session + #[arg(long)] + bot: bool, + }, } #[tokio::main] @@ -468,6 +475,9 @@ async fn main() -> Result<()> { PdsCommands::Version { networks } => { commands::pds::check_versions(&networks).await?; } + PdsCommands::Session { bot } => { + commands::pds::show_session(bot)?; + } } } Commands::Oauth { handle, bot } => {