Files
log/src/commands/did.rs
2026-01-18 18:08:53 +09:00

35 lines
868 B
Rust

use anyhow::{Context, Result};
use serde::Deserialize;
use crate::lexicons::{self, com_atproto_identity};
#[derive(Debug, Deserialize)]
struct ResolveHandleResponse {
did: String,
}
/// Resolve handle to DID
pub async fn resolve(handle: &str, server: &str) -> Result<()> {
let client = reqwest::Client::new();
let url = format!(
"{}?handle={}",
lexicons::url(server, &com_atproto_identity::RESOLVE_HANDLE),
handle
);
let res = client.get(&url).send().await?;
if !res.status().is_success() {
let status = res.status();
let body = res.text().await.unwrap_or_default();
anyhow::bail!("Failed to resolve handle: {} - {}", status, body);
}
let result: ResolveHandleResponse = res.json().await
.context("Failed to parse response")?;
println!("{}", result.did);
Ok(())
}